SQL(五)——group by子句

group by子句将查询结果按某一列或多列的值分组,值相等的为一组。
对查询结果分组,是为了细化“聚集函数”的作用范围
如果不对查询结果分组,“聚集函数”将作用于整个查询结果。
分组后“聚集函数”将作用于每一组,即每一组都有一个函数值。

这是在《数据库系统概论》里的话,但我觉的,group by子句可以理解成,先把数据按group by子句分组,再在分组里分别执行select。

查询结果分组

在这里插入图片描述

select cno 课程代号, count(sno) 选课人数
from sc
group by cno

将查询结果按课程代号分组,然后在各个分组里count
在这里插入图片描述

having

select sno 学号, count(cno) 选了多少课
from sc
group by sno
having count(*)>=3

having是将group by的分组进行筛选。
本例中,

  • group by sno 将数据分为四组,
  • having count(*)>=3 将元组数大于3的组筛选出来
  • select sno 学号, count(cno) 选了多少课 最后执行select

在这里插入图片描述

where、having的区别

where子句作用于基本表视图,从中选择满足条件的元组。
having短语作用于group by 组,从中选择满足条件的组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值