title | date | tags | categories | description | |||
---|---|---|---|---|---|---|---|
mysql分组数据
|
2020-04-23 02:49:02 -0700
|
|
|
|
创建分组
分组是在SELECT
语句的ORDER BY
子句中建立的
SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;
通过GROUP BY
子句,导致对每个vend_id而不是整个表计算COUNT(*)
一次
除了聚集计算语句外,SELECT
语句中的每个列都必须在GROUP BY
子句中给出
GROUP BY
必须出现在WHERE
之后,ORDER BY
之前
- WITH ROLLUP关键字
在group分组字段的基础上再进行统计数据
SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id WITH ROLLUP;
过滤分组
过滤分组使用HAVING
子句,他非常类似于WHERE
,唯一的差别是WHERE
过滤行,而HAVING
过滤分组(WHERE
在分组前进行过滤,而HAVING
在数据分组后进行过滤)
SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id
HAVING COUNT(*) > 2;