【发布时间】:2017-03-13 21:27:26
【问题描述】:
我在我正在尝试的 MySQL 中发现了一个问题。请告诉我以下解决方案是否有效或有更好的解决方案?
select D.DEPT_NAME, COUNT(*)
from Departments D
left outer join STUDENTS S
on S.Dept_ID = D.Dept_ID
group by D.DEPT_NAME
order by 2 desc, 1
Students 表有以下字段:
Student_ID
Student_Name
Gender
Dept_ID
部门表有以下字段:
Dept_ID
Dept_Name
一所大学使用 2 个数据表 Student 和 Departments 来存储数据 关于其学生和与每个专业相关的部门。
编写查询以打印相应的部门名称和学生人数 Departments 表中所有部门的每个部门的专业 (即使是目前没有学生的)。
按学生人数降序排列结果;如果两个或多个部门的学生人数相同,则按部门名称的字母顺序对这些部门进行排序。
【问题讨论】:
-
一个可能的问题是
COUNT(*)。如果部门没有学生,它会返回什么?我猜应该是 1,因为那个部门有一条线。 -
我是对的,请参阅 sqlfiddle.com/#!15/39a8b/1/0 - 2 个部门(数学和物理)没有学生,您的查询显示他们的计数为 1。
-
@marek.jancuska 你能告诉我哪些 SQL 查询有效吗?
-
算其他东西
-
嗯,这很可能是一个家庭作业,当你试图弄清楚时你会学到更多,作为一个提示,我建议postgresql.org/docs/9.5/static/…。