加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

group by ,having, 聚合函数的使用

发布时间:2020-12-13 20:04:30 所属栏目:百科 来源:网络整理
导读:前言: 在此之前对数据库中的group by 和having以及聚合函数一起使用的规则很模糊,今天特意总结了三者之间的使用规则,希望也能帮助到各位。 1:count() max() min() avg() sum() 聚合函数 作用: count() 统计总记录数,max() 取最大值,min()取最小值,av

前言: 在此之前对数据库中的group by 和having以及聚合函数一起使用的规则很模糊,今天特意总结了三者之间的使用规则,希望也能帮助到各位。

1:count() max() min() avg() sum() 聚合函数

作用:count() 统计总记录数,max() 取最大值,min()取最小值,avg()取平均值,sum() 总和

例子:select count(sid) from gradewhere cid=3; 查询参加科目编号为3考试的同学总数

select max(scgrade) fromgradewhere cid=1; 查询参加科目编号为1考试的所有同学中的最高分数

select min(scgrade) fromgradewhere cid=1; 查询参加科目编号为1考试的所有同学中的最低分数

select sum(scgrade) fromgradewhere sid=5; 统计参加科目编号为5考试的所有同学分数的总和

select avg(scgrade) fromgradewhere cid=1; 查询参加科目编号为1考试的所有同学中的平均分

讲解:count()括号中的参数适于所有的字段,而后面的四种聚合函数主要是针对数字类型的字段。


2:group by 分组

作用:group by是select语句的从句,用来指定查询分组条件,主要用来对查询的结果进行分组,相同组合的分组条件在 结果集中只显示一行记录

例子:select sid,count(cid) from grade group by sid; 根据分数表(grade)查询出每一个学生(sid 学生编号)共参加了几 科的考试(cid 科目编号);

讲解:group by 后面跟的字段必需是在select 出现的字段 ,且select 后的字段只能为group by 字段和聚合函数。


3: having 判断

作用:having子句的作用就是为每一个组指定条件,像where指定条件一样,也就是说,可以根据你指定的 条件来选择行。

例子:select sids from (select sid as sids fromgroupwhere scgrade<60) group by sids having count(sids)>=2; 查询超过两科没及格的学生id

讲解:having必须处在group by子句之后 。


补允:where 和having的区别。

where:where子句在聚合前先筛选记录.也就是说作用在group by 子句和having子句前.

having:having子句在聚合后对组记录进行筛选

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读