如何通过 if 语句对 SQL 查询进行排序
How to sort SQL query by if statement
我有两个 table 看起来像这样:
STUDENT
ID:Integer
NAME: String
GENDER: Character
DEPT_ID: Integer
DEPARTMENT
ID: Integer
NAME: String
我想写一个查询,打印table系所有系(即使没有在读学生)的系名和每个系的学生人数。
我的目标是按学生人数降序对结果进行排序;如果 2 个或更多学生的学生人数相同,则按部门名称的字母顺序对这些部门进行排序。
SELECT DEPARTMENT.NAME, COUNT (STUDENT.ID) AS STUDENT_COUNT FROM DEPARTMENT LEFT JOIN STUDENT ON DEPARTMENT.ID = STUDENT.DEPT_ID GROUP BY DEPARTMENT.NAMR ORDER BY STUDENT-COUNT DESC;
我是 SQL 的新手,但这是我能想到的最好的。它不是按字母顺序对具有相同名称的部门进行排序。
您可以像这样在学生人数后添加部门名称
SELECT DEPARTMENT.NAME, COUNT (STUDENT.ID) AS STUDENT_COUNT FROM DEPARTMENT LEFT JOIN STUDENT ON DEPARTMENT.ID = STUDENT.DEPT_ID GROUP BY DEPARTMENT.NAME ORDER BY STUDENT-COUNT DESC,DEPARTMENT.NAME;
SELECT DEPARTMENT.NAME, COUNT(STUDENT.ID) AS STUDENT_COUNT
FROM DEPARTMENT
LEFT JOIN STUDENT
ON DEPARTMENT.ID = STUDENT.DEPT_ID
GROUP BY DEPARTMENT.NAME
ORDER BY STUDENT_COUNT DESC,DEPARTMENT.NAME ASC;
下面是 link 到 sqlfiddle 的示例。
Link: http://sqlfiddle.com/#!9/08807c4/1/0
Resultset
我有两个 table 看起来像这样:
STUDENT
ID:Integer
NAME: String
GENDER: Character
DEPT_ID: Integer
DEPARTMENT
ID: Integer
NAME: String
我想写一个查询,打印table系所有系(即使没有在读学生)的系名和每个系的学生人数。
我的目标是按学生人数降序对结果进行排序;如果 2 个或更多学生的学生人数相同,则按部门名称的字母顺序对这些部门进行排序。
SELECT DEPARTMENT.NAME, COUNT (STUDENT.ID) AS STUDENT_COUNT FROM DEPARTMENT LEFT JOIN STUDENT ON DEPARTMENT.ID = STUDENT.DEPT_ID GROUP BY DEPARTMENT.NAMR ORDER BY STUDENT-COUNT DESC;
我是 SQL 的新手,但这是我能想到的最好的。它不是按字母顺序对具有相同名称的部门进行排序。
您可以像这样在学生人数后添加部门名称
SELECT DEPARTMENT.NAME, COUNT (STUDENT.ID) AS STUDENT_COUNT FROM DEPARTMENT LEFT JOIN STUDENT ON DEPARTMENT.ID = STUDENT.DEPT_ID GROUP BY DEPARTMENT.NAME ORDER BY STUDENT-COUNT DESC,DEPARTMENT.NAME;
SELECT DEPARTMENT.NAME, COUNT(STUDENT.ID) AS STUDENT_COUNT
FROM DEPARTMENT
LEFT JOIN STUDENT
ON DEPARTMENT.ID = STUDENT.DEPT_ID
GROUP BY DEPARTMENT.NAME
ORDER BY STUDENT_COUNT DESC,DEPARTMENT.NAME ASC;
下面是 link 到 sqlfiddle 的示例。
Link: http://sqlfiddle.com/#!9/08807c4/1/0
Resultset