Aggregates
Group By
Totals Per Category
GROUP BY runs aggregates separately for each group.
Program
Play the query to summarize sales per item.
group_by.sql
Replay: real traced execution (multi-file project)
CREATE TABLE sales (item TEXT, qty INTEGER);
INSERT INTO sales VALUES ('book', 2), ('pen', 5), ('book', 3);
SELECT item, SUM(qty) AS sold FROM sales GROUP BY item ORDER BY item;
tables ← 1 row
1CREATE TABLE sales (item TEXT, qty INTEGER);2INSERT INTO sales VALUES ('book', 2), ('pen', 5), ('book', 3);values this step1 rowtablessales ← 3 rows
1CREATE TABLE sales (item TEXT, qty INTEGER);2INSERT INTO sales VALUES ('book', 2), ('pen', 5), ('book', 3);3SELECT item, SUM(qty) AS sold FROM sales GROUP BY item ORDER BY item;values this step3 rowssalesresult ← 2 rows
2INSERT INTO sales VALUES ('book', 2), ('pen', 5), ('book', 3);3SELECT item, SUM(qty) AS sold FROM sales GROUP BY item ORDER BY item;values this step2 rowsresult
Make One Total Per Item
- The rows include two
booksales and onepensale. GROUP BY itemputs matching item names together.SUM(qty)adds quantities inside each group.ORDER BY itemprintsbookbeforepen. | Item group | Rows included | Sold | | --- | --- | --- | |book|2and3|5| |pen|5|5|
GROUP BY
`GROUP BY item` creates one group per item value.
aggregate per group
`SUM(qty)` runs inside each group.
ORDER BY
Sorting makes grouped output easy to compare.
Exercise: group_by.sql
Group sales by item, sum quantity per item, and sort the grouped rows by item