SQL GROUP BY
The group by
command allows you to categorize rows based on one or more columns to calculate things like average, max value, min value, etc, for each category.
-- Works in PostgreSQL, MySQL, SQL Server, and Oracle
SELECT
tenant_id,
count(*) as num_payments
FROM
rent_payments
GROUP BY
tenant_id;
rent_payments
table
id | tenant_id | payment_date | dollar_amount |
---|---|---|---|
1 | 1 | 3/1/2018 | 2000 |
2 | 2 | 3/2/2018 | 1500 |
3 | 3 | 3/1/2018 | 1800 |
4 | 4 | 3/3/2018 | 1900 |
5 | 1 | 4/2/2018 | 2000 |
6 | 4 | 4/2/2018 | 1900 |
Query results
tenant_id | num_payments |
---|---|
1 | 2 |
2 | 1 |
3 | 1 |
4 | 2 |
Explanation
In this example, we used the COUNT()
aggregate function. This counted the occurence of each unique value in the tenant_id
column.
We could have used another aggregate function to get a different result, such as: