goup by ... having 用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了goup by ... having 用法相关的知识,希望对你有一定的参考价值。

谢谢了, 各位大哥大姐!!

一.分组查询
1.使用group by进行分组查询
在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:
〉被分组的列
〉为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数
group by的使用在这只写几个例子吧:
例:
select courseID,avg(score) as 课程平均成绩
from score
group by courseID
例:
select studentID as 学员编号,courseID as 内部测试,avg(score) as 内部测试平均成绩
from score
group by studentID,courseID
2.使用having子句进行分组筛选
where子句只能对没有分组统计前的数据行进行筛选,对分组后的条件的筛选必须使用having子句
例:
select studentID as 学员编号,courseID as 内部测试,avg(score) as 内部测试平均成绩
from score
group by studentID,courseID
having count(score)>1
!在select语句中,where、group by、having子句和统计函数的执行次序如下:
where子句从数据源中去掉不符合去搜索条件的数据;group by子句搜集数据行到各个组中,统计函数为各个组计算统计值;having子句去掉不符合其组搜索条件的各组数据行
参考技术A 使用HAVING短语筛选最终输出结果
只有满足HAVING短语指定条件的组才输出
HAVING短语与WHERE子句的区别:作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组。
HAVING短语作用于组,从中选择满足条件的组。

例1 查询有3门以上课程是90分以上的
学生的学号及(90分以上的)课程数
SELECT Sno, COUNT(*)
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(*)>=3;
例2 查询选修了3门以上课程的学生学号。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
参考技术B http://zhidao.baidu.com/question/79045926.html
我觉得这个是最好的一个例子了
参考技术C goup by 分组
having 对分组进行选择
参考技术D group by 是分组
having 是聚集

以上是关于goup by ... having 用法的主要内容,如果未能解决你的问题,请参考以下文章

group by having用法举例

order_by_group_by_having的用法区别

GROUP BY,WHERE,HAVING之间的区别和用法

group by 和 having 用法

GROUP BY,WHERE,HAVING之间的区别和用法

GROUP BY,WHERE,HAVING之间的区别和用法