常用聚合函数
COUNT() 求有多少行
SUM() 求和
AVG() 求平均值
MIN() 求最小值
MAX() 求最大值
举个栗子
SELECT AVG(price) FROM products WHERE price_id > 10;
这行代码就是在求id大于10的价格的平均值
AVG(price)表示求price列的平均值
执行逻辑为 先由WHERE语句删选出price_id>10的行 然后再把这些行的price求平均值输出
加别名的例子
SELECT AVG(price) AS avg_price FROM products WHERE price_id > 10;
分组查询
GROUP BY
创建分组
直接看例子
SELECT vend_id,COUNT(*) AS num_prods FROM products GROUP BY vend_id;
执行逻辑是: 先把所有数据按照vend_id进行分组,然后再进行分组运算
如果分组中出现NULL的话 NULL作为单独的一个组出现
GROUP BY 语句必须出现在WHERE之后 ORDER BY之前
GROUP BY的参数不能是表达式 不能是别名
HAVING
过滤分组
所有WHERE的选项都适用于HAVING,HAVING和WHERE的区别就是一个是过滤组,一个是过滤行
或者可以这么理解 他们都是过滤作用 但是WHERE是在分组之前过滤 HAVING是在分组之后过滤
这里的HAVING的作用就是 只有COUNT(*) >= 2 的组才会留下
SELECT子句的顺序
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT