There are so many exciting projects out there in the Data World. Artificial Intelligence, Machine Learning, Neural Nets, Blockchain, and more are sweeping the technology industry. In order to get to the cutting-edge stuff, first and foremost, data needs to be stored, evaluated, and tested. The best place to do that is SQL (or a library that operates with SQL-like commands, see my article on Python’s Pandas library).
This series Data Mastery: SQL, will teach you the essential subjects. These are not exhaustive tutorials. Instead they are focused preparation guides — with brevity and efficiency in mind. It is meant for:
See my resource list of the books I used to prepare for my big interview
Each article will contain a brief technical explanation of the subject, an example question, and an answer. Follow up articles will contain challenging questions so you can evaluate your learning.
This series does not come with accompanying data sets. The advantage to this is when you are on the drawing board, whether in an interview or project design, you do not have test data to play with. You have to think abstract.
Often in our jobs we need to provide summary statistics of data. The SQL aggregation functions you need to know are:
COUNT is a special one because it can be used in conjunction with DISTINCT to find the number of unique values. Otherwise it counts the presence of non NULL values. All aggregation functions will go after the word SELECT in the comma separated list.
Revisiting our daily_user_score table:
date | userid | sessionid | score
------------------------------------------
2018–09–01 | 983489272 | 125 | 112
2018–09–01 | 234342423 | 34 | 112
2018–09–01 | 567584329 | 207 | 618
2018–09–02 | 983489272 | 126 | 410
2018–09–02 | 983489272 | 127 | 339
Say we want to find the number of users who played our game and the average, minimum, and maximum score. Here is our query:
SELECT COUNT(DISTINCT userid) AS number_of_users,
AVG(score) AS average_score,
MIN(score) AS minimum_score,
MAX(score) AS maximum_score
FROM daily_user_score;
This query returns:
number_of_users | average_score | minimum_score | maximum_score
---------------------------------------------------------------
3 | 318.2 | 112 | 618
Notice that the keyword AS allows you to pick a name for the column which is called an “alias”. It is good practice to use this when you use aggregation functions in the SELECT statement.
Write a SQL query that sums up all points earned in all games ever played.
SELECT sum(score) AS total_points
FROM daily_user_score;
This query returns:
total_points
------------
1591
Thanks for reading! If you have questions feel free to comment & I will try to get back to you.
Connect with me on Instagram @lauren__glass
Connect with me on LinkedIn
Check out my essentials list on Amazon
Search for me using my nametag on Instagram!