PLSQL选择最常出现的值

时间:2018-12-06 22:04:51

标签: sql oracle plsql

我要执行以下操作: 创建一个过程,该过程返回具有最多注册量的section_id值。可以通过计算该表中student_id的数量来计算。

示例:

SELECT count(student_id) amount
FROM enrollments
WHERE section_id=20;

这将返回第20部分的注册人数。

但是我希望它返回注册人数最多的部分的金额。但是我不知道如何解决这个问题?正如我提到的,我使用PLSQL,因此所有这些功能都可以在这里使用

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

  SELECT section_id, count(student_id) as StudentCount
  FROM enrollments a
  group by section_id
  having count(student_id) = (SELECT max(count(student_id)) 
  FROM enrollments a
  group by section_id);

SQL小提琴:http://sqlfiddle.com/#!4/24f7c/1

以下是有关如何使用keep和解决同一查询的有趣链接:

http://rwijk.blogspot.com/2012/09/keep-clause.html

答案 1 :(得分:-1)

请尝试以下操作:

SELECT section_id, count(student_id) amount
FROM enrollments
GROUP BY section_id

答案 2 :(得分:-1)

您可以尝试以下方法:

SELECT count(student_id) amount FROM enrollments 
group by section_id
Order by amount desc
limit 1