今天就和大家聊聊如何在数据库中使用group by方法。很多人可能对此还不是很了解。为了让大家更好的了解,小编为大家总结了以下内容。希望您能从本文中有所收获。
分组依据
概念
分组依据语句来自英文字面意思是“按照(by)一定的规则分组(Group)”。
功能:通过一定的规则将一个数据集划分为若干个小区域,然后对几个小区域进行数据处理。
注意:group by是先排序再分组!
语法
SELECT 表达式1, 表达式2, ... 表达式_n, 聚合函数 (聚合表达式)FROM 表[WHERE 条件]GROUP BY 表达式 1、表达式 2、... 表达式_n[ORDER BY 表达式 [ ASC | DESC ]];
语法说明
expression1, expression2,... expression_n
表达式未封装在聚合函数中,必须包含在 SQL 语句末尾的 GROUP BY 子句中。
aggregate_function
这是一个聚合函数,例如 SUM、COUNT、MIN、MAX 或 AVG 函数。
aggregate_expression
这是将使用aggregate_function 的列或表达式。
tables
您希望从中检索记录的表。 FROM 子句必须至少包含一个表。
哪里
可选。这些是记录必须满足才能被选择的条件。
ORDER BY 表达式
可选。用于对结果集中的记录进行排序的表达式。如果提供多个表达式,值应该用逗号分隔。
ASC
可选。 ASC 按表达式对结果集进行升序排序。如果未提供修饰符,这是默认行为。
DESC
可选。 DESC 按表达式对结果集进行降序排序命令。
常用聚合函数
count()计数
sum()求和
avg()平均值
max()最大值
min()最小值
示例
< p >我们以下面两个表为例:
学生表(Student)
ID th> | 学生姓名 | 学生班级ID |
---|
1 | 小明 | < td >1
2 | 小红 | 2 |
3 | 小兰 | 3 |
4 | 小鹿 | 2< /td> |
5 | 小子 | 1 |
类表(Class)
ClassID | ClassName |
1 | 软件类别 1 |
2 | 软件类别 2 |
3 | 软件三班 |
计算每个班有多少学生?
SELECT cl.ClassName,COUNT(stu.StudentClassID) AS StudentNumFROM Student Stu LEFT JOIN class cl ON Stu.StudentClassID = cl.ClassIDGROUP BY cl.ClassName;计算结果: p>
ClassName | StudentName |
---|
软件1 类 | 2 |
软件 2 类 | 2 |
软件3类 | 1 |
HAVING
HAVING语句通常结合使用配合GROUP BY语句对GROUP BY语句返回的记录集进行过滤。
HAVING语句的存在弥补了WHERE关键字不能与聚合结合使用的缺点
通俗地说:WHERE过滤行,HAVING过滤组
语法
SELECT 表达式 1, 表达式 2, ... 表达式_n, 聚合函数 (聚合表达式)FROM 表[WHERE 条件]GROUP BY 表达式1, 表达式2, ... 表达式_n
语法说明strong>
HAVING 条件这是另一个条件,仅应用于聚合结果以限制返回的行组。只有那些条件评估为 TRUE 的组才会包含在结果集中。
示例
利用上面两个数据表
查询编号为大于2级?
SELECT cl.ClassName,COUNT(stu.StudentClassID) AS StudentNumFROM 学生 LEFT JOIN 班级 cl ON Stu.StudentClassID = cl.ClassIDGROUP BY cl.ClassNameHAVING COUNT (stu.StudentClassID)>=2;
计算结果:
ClassName | StudentName < /th> |
---|
软件类别 1 | 2 |
软件类别 2 | 2 |
软件类别 2 | 2 |
软件类别 2 | 2 | td>2 |
摘要
当group by与aggr一起使用时egate函数,作用是分组后进行计算
当group by与having配合使用时,作用是分组后进行过滤,得到符合条件的分组的返回结果。
having和where的区别:where过滤行,having过滤组
看完上面的内容,你将会更好的理解如何使用按数据库中的方法分组?如果您想了解更多知识或相关内容,请关注行业资讯频道。感谢您的支持。
1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4.
编程技术 > 如何在数据库中使用group by方法