order by 是按字段排序
group by 是按字段分组,即select 字段必须是“分组依据字段”
order by 从英文翻译出发,就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。
group by 从英文翻译理解,就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
关于“聚合函数”,简单的理解就是像sum()、count()、avg()等都是“聚合函数”
使用group by 的目的就是要将数据分类汇总。
(1)原始数据表
类别 | 数量 | 备注 |
a | 2 | a_001 |
a | 3 | a_002 |
b | 7 | a_003 |
(2)group by 语句
select 类别, sum(数量) as 数量之和 from A group by 类别
(2)的结果如下:
类别 | 数量 |
a | 5 |
b | 7 |
(3) group by 与 order by 语句
select 类别, sum(数量) AS 数量之和 from A group by 类别 order by sum(数量) desc
(3)的结果如下:
类别 | 数量 |
b | 7 |
a | 5 |
(4)总结
order by是按指定的列的升序或降序来给查询结果排序,
它不需要查询结果中出现order by的栏位.
更改Order by里的栏位只会影响查询结果的顺序,而不影响查询出的记录总数,和每条记录的内容.
group by是按指定的列对满足Where条件的所有记录分组,并对组内的一些数值型栏位计算出每组的一个统计指标,如求和、求个数、求平均值、求最大值、求最小值、、、、、、、
它对查询结果有个要求:查询结果中的出现的栏位必须是Group by中栏位的子集。
更改Group by里栏位的顺序不会对查询结果有任何影响;
但是更改Group by的栏位,会对查询得到的记录数量,以及各个汇总函数的结果造成影响。