As we saw in the Math section, SQL provides many ways to calculate aggregate measures and statistics. We can use a mathematical function like
SUM() to sum a list of a values, or
AVG() to calculate the average of a list of values.
Sometimes, however, it’s useful to run that aggregation/calculation multiple times, for each separate group in our data.
For example, take a look at the following table
calls, which contains call records for a telemarketing company:
We could use a a mathematical function like
COUNT to count the number of calls in the table, giving us an overall/total number of calls:
But what if we want to do something a bit more nuanced, like counting the number of calls on each separate day, or counting the number of calls made by each separate agent? Rather than generating a single number/count using
COUNT, we’d need to produce tables like this:
Luckily, SQL provides a handy operator -
GROUP BY - which lets us do exactly that. In this chapter, we’ll find out how.