mysql分组GROUP BY常用sql

数据分组 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必知必会》

猜你喜欢

转载自www.cnblogs.com/expiator/p/10283980.html