这是我当前的查询:
SELECT Takes_T.sec_id AS 'Section ID',
Takes_T.semester AS 'Semester',
Takes_T.year AS 'Year',
COUNT(Takes_T.takes_id) AS 'Enrollment'
From Takes_T
Group By Takes_T.year, Takes_T.semester, Takes_T.sec_id
ORDER BY Takes_T.year, Takes_T.semester DESC, Takes_T.sec_id,
Takes_T.course_id
;
这会产生以下结果:
(对于糟糕的格式,我深表歉意。我不知道如何将其放入表格中)
Section ID | Semester | Year | Enrollment
1 | Spring | 2014 | 12922
2 | Spring | 2014 | 1434
3 | Spring | 2014 | 322
1 | Fall | 2014 | 12590
2 | Fall | 2014 | 2732
我需要做的是显示每个部分的最大注册人数(一个部分是部分 ID、学期和年份的组合)。所以我需要的是:
Section ID Semester Year Enrollment
1 Spring 2014 12922
1 Fall 2014 12590
如何修改查询以仅显示每个部分的最大值?
最佳答案
我不知道您正在使用哪种 RDBMS,但以下内容应该适用于 MS SQL Server:
SELECT
sec_id AS 'Section ID',
semester AS 'Semester',
year AS 'Year',
COUNT(takes_id) AS 'Enrollment'
FROM Takes_T t
WHERE sec_id = (
SELECT TOP 1 sec_id
FROM Takes_T
WHERE year = t.year
AND semester = t.semester
GROUP BY year, semester
ORDER BY count(*) DESC
)
GROUP BY year, semester, sec_id
ORDER BY year, semester DESC, sec_id
编辑:MySQL 也是如此:
SELECT
sec_id AS 'Section ID',
semester AS 'Semester',
year AS 'Year',
COUNT(takes_id) AS 'Enrollment'
FROM Takes_T t
WHERE sec_id = (
SELECT sec_id
FROM Takes_T
WHERE year = t.year
AND semester = t.semester
GROUP BY year, semester
ORDER BY count(*) DESC
LIMIT 1
)
GROUP BY year, semester, sec_id
ORDER BY year, semester DESC, sec_id
关于mysql - 根据之前的 COUNT() 显示多个组的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652411/