如何通过 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