MYSQL-聚合函数及分组查询

常用聚合函数

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

猜你喜欢

转载自blog.csdn.net/chara9885/article/details/131493035