如何按组分组比较列数,并找出它们的最大值

问题描述 投票:1回答:2

首先请参考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无效使用组功能

所以请任何人帮我正确查询。 提前致谢。

mysql sql database join sqlfiddle
2个回答
0
投票

只需在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
                         )

0
投票

如果您希望课程具有最大数量,并且首先没有关联,或者您可以容忍返回单个记录,那么您可以在此处使用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;
© www.soinside.com 2019 - 2024. All rights reserved.