Mysql笔记:group by、having和where解析

MySQL中GROUP BY与HAVING详解

Mysql笔记:group by、having和where解析

group by:

group by 子句将记录分组到汇总行中。

group by 为每个组返回一个记录。

group by 通常还涉及聚合count,max,sum,avg 等。

group by 可以按一列或多列进行分组。

group by 按分组字段进行排序后,order by 可以以汇总字段来进行排序。

--分组

SELECT cust_name, COUNT(cust_address) AS addr_num FROM Customers GROUP BY cust_name; 

--分组后排序

SELECT cust_name, COUNT(cust_address) AS addr_num FROM Customers GROUP BY cust_name ORDER BY cust_name DESC; 

having:

having 用于对汇总的 group by 结果进行过滤。

having 一般都是和 group by 连用。

where 和 having 可以在相同的查询中。

-- 使用 WHERE 和 HAVING 过滤数据

SELECT cust_name, COUNT(*) AS NumberOfOrders FROM Customers WHERE cust_email IS NOT NULL GROUP BY cust_name HAVING COUNT(*) > 1; 

having vs where:

where:过滤过滤指定的行,后面不能加聚合函数(分组函数)。

where 在group by 前。

having:过滤分组,一般都是和 group by 连用,不能单独使用。

having 在 group by 之后。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值