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

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;

以上是关于如何按组分组比较列数,并找出它们的最大值的主要内容,如果未能解决你的问题,请参考以下文章

查找最大值并按 id 为非数字字段按组分配值

在目录中按组大小压缩文件

如何按组进行汇总并使用R中的dplyr获取总体数据集的摘要

Pandas按组内的值分组和排序[重复]

如果名称按组的顺序不同,R data.table 分组操作返回错误值?

如何按键分组并在单行的其他列中返回最小值/最大值?