mysql分组语句的子句_MySQL学习笔记(四)——分组数据group by子句和having子句

分组允许把数据分为多个逻辑组,以便对每个组进行聚集计算。

66e2f483f1029abfea5da361342e4505.png

例如我们查下每个系里有多少名学生:

a0b233db7afca9ad91460a2c89a8f0ba.png

在使用group by 子句之前,还需要知道一些规定:

1. group by 子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更为细致的控制。

2. 如果在group by子句中嵌套了分组,数据将在最后规定的分组上进行汇总。

3. group by 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)

4. select 语句中的每个列都必须在group by子句中给出。

5. 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多个NULL值,它们将分为一组。

6. group by 子句必须出现在where子句之后,order by 子句之前

使用with rollup关键字,可以得到每个分组以及每个分组汇总级别的值:

52a0fdd7d5cca2f3f5f4345bf1df92f3.png

在上面我们说过了group by在where之后,所以我们都用having来进行数据过滤,having支持所有where操作符

de27284c16f9bbc1849ef60d54473f50.png

我们选择系里超过2个人的系。

where 和 having的区别:having在数据分组后进行过滤。

select 子句顺序:

子句                说明                                是否必须使用

select          要返回的列或表达式                         是

from           从中检索数据的表                    仅在从表选择数据时使用

where         行级过滤                                        否

group by     分组说明                               仅在按组计算聚集时使用

having         组级过滤                                        否

order by      输出排序顺序                                   否

limit            要检索的行数                                   否

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值