Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我可以获得行总和()的第二大值(使用COUNT())吗?_Mysql_Sql_Greatest N Per Group - Fatal编程技术网

Mysql 我可以获得行总和()的第二大值(使用COUNT())吗?

Mysql 我可以获得行总和()的第二大值(使用COUNT())吗?,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我在这个网站上找到了这些问题的单独答案,但我想知道这些问题是否可以合并成一个查询 我有一个课程表,包含课程ID和学生ID。我想通过计算每个CourseID的行数之和得到学生数量,然后得到结果输出的第二大值 我还不知道从哪里开始,所以非常感谢您的帮助 编辑 请原谅我没有添加代码或期望的结果。我会尽力澄清的 当问这个问题时,我忘了加上我不会使用LIMIT(它是可选的参数OFFSET) 预期的结果将是: Example Table FollowsCourse | StudentID |

我在这个网站上找到了这些问题的单独答案,但我想知道这些问题是否可以合并成一个查询

我有一个课程表,包含课程ID和学生ID。我想通过计算每个CourseID的行数之和得到学生数量,然后得到结果输出的第二大值

我还不知道从哪里开始,所以非常感谢您的帮助

编辑

请原谅我没有添加代码或期望的结果。我会尽力澄清的

当问这个问题时,我忘了加上我不会使用LIMIT(它是可选的参数OFFSET)

预期的结果将是:

    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。正如您将在我的问题编辑中看到的,我需要一个不使用限制参数的答案。谢谢您的帮助。非常感谢。为什么您不能使用限制