SQL中的group by语句和order by语句怎么用?最好能有个例子

2024年11月18日 10:25
有5个网友回答
网友(1):

group by是分组的,比如你要查询一个班级的学生,各省分别有多少人。(表结构是学生表,有学号,姓名,所在省,备注等。)
就应该用到group by了,如:
SELECT 所在省,COUNT(*) AS 学生数
FROM 学生
GROUP BY 所在省

Order by是用来排序的。如,你想要把上例中查得的结果按人数从大到小,或从小到大排列,可以加这么一句,
ORDER BY 学生人数 (DESC或ASC);
好了,就这么个用法。
后面括号的关键字,指明了从大到小,还是从小到大,只能写一个,并且不要括号。

网友(2):

group by 是分组的意思,按其后的字段对结果分组,该字段内容相同的结果会列在一起;
例子:
原数据库内容:
学号 姓名 性别 系别
101013 王五 男 计算机
101014 孙二 女 数学
101011 张三 男 计算机
101012 李四 女 数学
select *
from Student
Group by Dept //用系别对结果分组
结果:
101011 张三 男 计算机
101013 王五 男 计算机
101014 孙二 女 数学
101012 李四 女 数学
***************************************************
order by 是排序的意思,按其后的字段对结果排序,但是排序分升序,降序:
select *
from Student
order by No //用学号升序排列结果:
101011 张三 男 计算机
101012 李四 女 数学
101013 王五 男 计算机
101014 孙二 女 数学

网友(3):

可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:

SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT

此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。

order by 是排序用的,默认是正序排列,order by 课程名 desc 表示按照倒序排序。
当然你可以把order by 放在 group by的后面为结果进行排序。
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
ORDER BY MAX(SALARY)

网友(4):

group by主要用于分组了,比如在一个班级中一共有4个小组,问第一小组的平均成绩是多少,这就是针对组而言了,select avg(成绩) from student group by 第一小组,如果有条件再加上having+条件,同where +条件用法相同
而order by是对字段排序用的,如对你的学号进行排序查询,select * from student order by 学号

网友(5):


顺序是:
SELECT .... FROM .... WHERE .... GROUP BY .... ORDER BY ....