Aggregations
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:
SELECT COUNT(*)
FROM calls
# Result
#
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.