数据分组 GROUP BY
GROUP BY可以根据一个或多个字段进行分组。
比如,根据prod_id分组:
SELECT prod_id ,user_id
FROM products
GROUP BY prod_id
注意:
1.GROUP BY可以包含多个列。比如GROUP BY prod_id,user_id ;
2.GROUP BY如果分组列中具有NULL值,则NULL会作为一个分组返回。如果列中有多行NULL,它们将分为一组;
3.GROUP BY必须出现在WHERE子句之后,ORDER BY子句之前。
分组统计
1.COUNT()函数:确定表中行的数目或符合条件的行的数目
注意:
COUNT(*)对表中行的数目进行计数,不管列中是否包含空值(NULL)或非空值。
使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
查询prod_id为10的商品数量:
SELECT COUNT(*) AS num
FROM products
WHERE prod_id=10;
2.根据分组,统计数量
根据prod_id分组,并查询统计各组的数量
SELECT prod_id ,COUNT(*) AS num
FROM products
GROUP BY prod_id
筛选分组 HAVING
1.筛选出订单数量大于2的用户id及其订单数量
SELECT user_id,COUNT(*) AS order_num
FROM orders
GROUP BY user_id
HAVING COUNT(*)>=2
其他
统计分组后的重复数据。
统计分组后的不重复数据。
参考资料:
《mysql必知必会》