利用SQL语言进行分组查询和分组过滤
2022/2/8 19:14:31
本文主要是介绍利用SQL语言进行分组查询和分组过滤,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录:1.分组
2.分组举例
3.分组过滤
4.分组过滤举例
1.分组(SQL语言的亮点之一)
(1)定义:SQL可以将检索到的元组按照某一条件进行分类,具有相同条件值的元组划到一个组或一个集合中,同时处理多个组或集合的聚集运算
(2)语法
Select 列名 | expr | agfunc(列名) [[, 列名 | expr | agfunc(列名) ] ... ]
From 表名1, [, 表名2 ... ]
[Where 检索条件]
[Group by 分组条件];
(3)分组条件
列名1,列名2,...
2.举例
(1)求每一个学生的平均成绩
Select S#, Avg( Score )
From SC
Group by S#;
(2)求每一门课程的平均成绩
Select C#, Avg ( Score )
From SC
Group by C#;
(3)求不及格课程超过两门的同学的学号
3.分组过滤
(1)定义:在分组的基础上,将满足条件的集合(分组)留下,不满足条件的剔除
(2)Having 子句(分组过滤子句):没有 Group by 子句,就不能有 Having 子句
(3)语法格式
Select 列名 | expr | agfunc(列名) [[, 列名 | expr | agfunc(列名) ] ... ]
From 表名1, [, 表名2 ... ]
[Where 检索条件]
[Group by 分组条件 [ Having 分组过滤条件] ];
4.举例
(1)求不合格课程超过两门的同学的学号
Select S#
From SC
Where Score < 60
Group by S# Having Count(*) > 2;
(2)求有十人以上不及格的课程号
Select C#
From SC
Where Score < 60
Group by C# Having Count(*) > 10;
(3)求有两门以上不及格课程同学的学号及其平均成绩
Where Score < 60 是不对的,没有录入大于 60 分课程的成绩
正确做法:先找出有两门课程不及格的同学的学号,再对他们的课程成绩做平均值
Select S#, Avg(Score)
From SC
Where S# in ( Select S# From SC Where Score < 60 Group by S# Having Count(*) > 2 )
Group by S#;
这篇关于利用SQL语言进行分组查询和分组过滤的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行