SQL:如何在计数后找到最大值?

时间:2015-11-15 14:51:59

标签: sql oracle count max

HY!

我必须确定哪个月是最多的考试。 我的表格显示:考试(Exam_id,Student_id,Teacher_id,Subject_id,Course_id,Exam_date,Result_is)。

首先,我必须计算每个月的考试数量。我用以下代码完成了这个:

SELECT SUBSTR(Exam_date, 4, 7) as When, COUNT(SUBSTR(Exam_date, 4,7)) as Count
FROM Exams
GROUP BY SUBSTR(Exam_date, 4, 7)

在此之后,我尝试使用以下代码提取最大值:

SELECT s.When, MAX(s.Count)
FROM(
    SELECT SUBSTR(Exam_date, 4, 7) as When, COUNT(SUBSTR(Exam_date, 4,7)) as Count
    FROM Exams
    GROUP BY SUBSTR(Exam_date, 4, 7)
)s
GROUP BY s.When

但结果是一样的,所以第二部分不起作用。 错误在哪里?

非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,假设exam_date属于DATE类型,您可以使用TO_CHAR(exam_date, 'MM')获取月份,而不是使用SUBSTR。

关于你的第二部分,你应该将结果与自身进行比较:

WITH table1 AS 
(SELECT TO_CHAR(exam_date, 'MM') as when, COUNT(TO_CHAR(exam_date, 'MM')) as count
FROM Exams
GROUP BY TO_CHAR(exam_date, 'MM'))
SELECT table1.when FROM table1 WHERE table1.count = (SELECT MAX(count) FROM table1);