使用聚合函数和 GROUP BY 计算总和、平均值以及分组统计。
在 Kodokon 中打开本课聚合函数以多行作为输入,返回单个值:一个总和、一个平均值、一个最小值……最简单的是 COUNT(*),它用来统计行数。它能自然地和 WHERE 结合:数据库先筛选,然后再统计。
SELECT COUNT(*) FROM books;
SELECT COUNT(*) FROM books WHERE genre = 'sf';其他几个必备的聚合函数作用于某一列:SUM(price) 求和,AVG(price) 计算平均值,MIN(year) 和 MAX(year) 找出最小值和最大值。AS 关键字给出一个别名,也就是给计算出的列一个易读的名字。
SELECT SUM(price) AS total FROM books;
SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';
SELECT MIN(year), MAX(year) FROM books;那要获得按类别的统计呢?这正是 GROUP BY 的作用:数据库把拥有相同值的行分到一组(这里是 genre),然后对每一组应用聚合函数。结果里每一组占一行。
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;
SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;