Mysql 我可以获得行总和()的第二大值(使用COUNT())吗?
我在这个网站上找到了这些问题的单独答案,但我想知道这些问题是否可以合并成一个查询 我有一个课程表,包含课程ID和学生ID。我想通过计算每个CourseID的行数之和得到学生数量,然后得到结果输出的第二大值 我还不知道从哪里开始,所以非常感谢您的帮助 编辑 请原谅我没有添加代码或期望的结果。我会尽力澄清的 当问这个问题时,我忘了加上我不会使用LIMIT(它是可选的参数OFFSET) 预期的结果将是:Mysql 我可以获得行总和()的第二大值(使用COUNT())吗?,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我在这个网站上找到了这些问题的单独答案,但我想知道这些问题是否可以合并成一个查询 我有一个课程表,包含课程ID和学生ID。我想通过计算每个CourseID的行数之和得到学生数量,然后得到结果输出的第二大值 我还不知道从哪里开始,所以非常感谢您的帮助 编辑 请原谅我没有添加代码或期望的结果。我会尽力澄清的 当问这个问题时,我忘了加上我不会使用LIMIT(它是可选的参数OFFSET) 预期的结果将是: Example Table FollowsCourse | StudentID |
Example Table FollowsCourse
| StudentID | CourseID |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 2 |
| 6 | 1 |
| 7 | 1 |
| 8 | 3 |
result:
| CourseID | Sum of Count |
| 1 | 4 |
| 2 | 3 |
| 3 | 1 |
然后,不知何故,我需要得到CourseID的第二大计数总和(因此在本例中为CourseID 2)
PS我没有很多提问的经验,因此感谢您指出我应该添加更多关于我的问题的信息。同样,您需要使用限制1,1。当然,您还需要分组和计数
SELECT courseid,
Count(studentid)
FROM followscourse
GROUP BY courseid
ORDER BY Count(studentid) DESC
LIMIT 1, 1
您也可以通过使用行数技术来实现这一点,但它要复杂得多,通常只用于解决问题
SELECT
courseid,
kount
FROM
( SELECT @num := @num + 1 AS row_number,
courseid,
kount
FROM (
SELECT courseid,
Count(studentid) kount
FROM followscourse
GROUP BY courseid
ORDER BY Count(studentid) DESC ) AS data
CROSS JOIN
(
SELECT @num := 0 ) rn ) as t
WHERE
row_number = 2
一个好的开始是在你的问题中提供示例数据和所需结果。这有助于你和其他人了解你在做什么。按顺序查询
ASC
(升序)和限制1,1
(第一个1是偏移量-从0开始,第二个1是行数)我认为“选择CourseID,计数(CourseID)按CourseID分组按计数排序(CourseID)说明“我应该给你一个列表,其中每行包含课程以及每门课程的学生人数,从最高到最低排列,然后你只需浏览列表并获取第二个结果作为第二个结果。不过,我不愿意将其作为答案发布,因为在编写SQL时,我往往会犯一些小错误,而无法进行测试st it。正如您将在我的问题编辑中看到的,我需要一个不使用限制参数的答案。谢谢您的帮助。非常感谢。为什么您不能使用限制