Data Mastery: SQL — Grouping

Written by laurenjglass9 | Published 2018/11/15
Tech Story Tags: data-mastery | programming | sql | data | data-science

TLDRvia the TL;DR App

Data Mastery: SQL — Grouping

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:

  • Software Engineers who want to analyze their creation’s data
  • Product Managers, Marketers, and others who want to be data-driven
  • Beginning Data Scientists, Data Engineers, Data Analysts, or Business Intelligence Developers preparing for interviews

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.

Grouping

The next level of using aggregation functions is when you want to see a breakdown. We will put the column name of the breakdown in two places in the query:

  1. Into the SELECT statement
  2. Into a GROUP BY statement

Let’s recall our daily_user_score table from earlier in the series:

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 wanted to focus on the number of users and their average score per day. The query will look like this:

SELECT date,
       COUNT(DISTINCT userid) AS number_of_users,
       AVG(score) AS average_score,
FROM daily_user_score
GROUP BY date;

This query returns:

date       | number_of_users    | average_score
-----------------------------------------------
2018–09–01 | 3                  | 280.66      
2018–09–01 | 1                  | 374.5

It is important to know that GROUP BY includes the functionality of SELECT DISTINCT. If you put a column name in the GROUP BY statement, the results will only include unique values.

Try it yourself

Write a SQL query that finds each user’s average score.

Answer

SELECT userid, AVG(score) AS average_score
FROM daily_user_score
GROUP BY userid;

This query returns:

userid    | average_score
----------------------
983489272 | 287
234342423 | 112
567584329 | 618

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!


Published by HackerNoon on 2018/11/15