我是 SQL 新手,所以这个问题可能很愚蠢。
这是相关表的示例行:学生:
+-------+----------+---------+------+------+-------+---------+-----------+
| StuID | LName | Fname | Age | Sex | Major | Advisor | city_code |
+-------+----------+---------+------+------+-------+---------+-----------+
| 1001 | Smith | Linda | 18 | F | 600 | 1121 | BAL |
Minor_in:
+-------+------+
| StuID | DNO |
+-------+------+
| 1004 | 520 |
部门:
+------+----------+--------------------------+------+--------------+--------+
| DNO | Division | DName | Room | Building | DPhone |
+------+----------+--------------------------+------+--------------+--------+
| 10 | AS | History of Art | 268 | Mergenthaler | 7117 |
我想在 CS 专业 (DNO = 600) 中找到最受欢迎的辅修学生这是我的查询,它有效但很难看:
SELECT DNO, count
FROM (SELECT DNO, COUNT(*) AS count
FROM Minor_in
WHERE StuID IN (SELECT StuID
FROM Student
WHERE (Major = 550 OR Major = 600))
GROUP BY DNO
) AS C1
WHERE count IN (
SELECT MAX(count)
FROM (
SELECT DNO, COUNT(*) AS count
FROM Minor_in
WHERE StuID IN (SELECT StuID
FROM Student
WHERE (Major = 550 OR Major = 600))
GROUP BY DNO
) AS MinorCount
);
有没有更好的办法?非常感谢!