如何按组分组比较列数,并找出它们的最大值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何按组分组比较列数,并找出它们的最大值相关的知识,希望对你有一定的参考价值。
首先请参考http://sqlfiddle.com/#!9/7b458/获取我创建的数据库。 (mysql)现在我有一个问题需要找出最多学生入学的课程。这就是我的进展方式
select course_name from `course-taken`
natural join course;
select course_name,count(course_name) from `course-taken`
natural join course
group by course_name;
请参阅http://sqlfiddle.com/#!9/7b458/6
现在的问题是如何找到我用Max(count(course_name)[http://sqlfiddle.com/#!9/7b458/7]尝试的count(course_name)中的最大值,但是显示
X无效使用组功能
所以请任何人帮我正确查询。 提前致谢。
答案
只需在HAVING
子句后添加GROUP BY
子句即可获得最大的course_name记录
HAVING count(course_name) = (
SELECT max(maxc) FROM
(
SELECT course_name, count(course_name) maxc
FROM `course-taken`
NATURAL JOIN course
GROUP BY course_name)cnt
)
另一答案
如果您希望课程具有最大数量,并且首先没有关联,或者您可以容忍返回单个记录,那么您可以在此处使用LIMIT
:
SELECT course_name, COUNT(course_name) AS cnt
FROM course-taken
NATURAL JOIN course
GROUP BY course_name
ORDER BY COUNT(course_name) DESC
LIMIT 1;
以上是关于如何按组分组比较列数,并找出它们的最大值的主要内容,如果未能解决你的问题,请参考以下文章