我有两张这样的桌子:

STUDENT
ID:Integer
NAME: String
GENDER: Character
DEPT_ID: Integer

DEPARTMENT
ID: Integer
NAME: String

我想写一个查询,打印department表中所有部门(即使是没有当前学生的部门)各自的部门名称和每个部门的专业学生人数.

我的目标是按学生人数降序排列结果;如果两个或两个以上的学生人数相同,则按系名的字母顺序对这些系进行排序.

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;

Mysql相关问答推荐

慢查询日志(log)甚至包括快速查询,因为它包括等待锁定所花费的时间

MySQL在使用SELECT*时不使用索引

计算男生的人数和女生的人数.学生是有入学记录的人

使用字符串文字与使用日期文字时的SQL行为

带有 JOIN 和 WHERE 子句的 INSERT 语句

查询获取日期之间的可数匹配条目并加入它们以读取用户状态

动态创建内联 SQL 表(用于排除左连接)

如何使用 laravel 连接 mysql?

试图获取非对象的属性

终止空闲的mysql连接

MySQL Group By 和 Sum 其他列的总值

在 spring-boot jpa hibernate 中 >4<24 后与 Db 的连接终止

MySQL - 如何 Select 值在数组中的行?

NodeJS/mySQL - ER_ACCESS_DENIED_ERROR 用户'root'@'localhost'的访问被拒绝(使用密码:是)

加快 mysql 转储和导入

MySQL导入数据库但忽略特定表

如何将 MySQL 查询结果存储在另一个表中?

从另一个表中 Select 具有 id 的行

按 COUNT(*) 过滤?

MySQL讲解查询理解