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

时间:2018-03-03 07:41:45

标签: mysql sql database join sqlfiddle

首先请参阅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

现在问题是如何从计数中找到最大值(course_name) 我尝试过Max(count(course_name)[http://sqlfiddle.com/#!9/7b458/7] 但那表明

  

X无效使用群组功能

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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
                         )