【问题标题】:Finding an element with max. no of appearing in SQL找到一个最大的元素。没有出现在 SQL 中
【发布时间】:2012-02-10 13:09:36
【问题描述】:

我有下表:

标识 |年份

10 | 2000

11 | 2001

10 | 2002

12 | 2003

11 | 2004

13 | 2005

10 | 2006

10 | 2007

根据 id,由于 10 出现次数最多,因此该表的选择应为 10。我知道这很容易,但我不能比 COUNT(*) 更进一步。

【问题讨论】:

    标签: mysql sql select count


    【解决方案1】:

    您需要分组依据、排序依据 - 以及限制:

    SELECT id FROM sometable GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1
    

    这将按 id 对表进行分组,按计数降序排列,然后选择第一行(计数最高的行)。

    【讨论】:

    • 因为当然可以有多个相同计数的最高计数,所以选择第一行可能还不够。
    • 是的,基于这个问题,我没有意识到这是值得关注的——我看到有人已经发布了该问题的答案——尽管我不确定发布的查询是否过于复杂。
    【解决方案2】:

    当有多个 id 具有最大计数时,以下 SQL 将起作用:

    SELECT id FROM table GROUP BY 1 
    HAVING COUNT(*)=( SELECT MAX(t.count) 
                        FROM ( SELECT id,COUNT(*) AS count
                                 FROM table GROUP BY 1 ) t )
    

    第一个(最里面的)SELECT 将只计算每个 id,这用于第二个SELECT 以确定最大计数,这将用于最后(最外面的)SELECT 以仅显示右侧ID。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2023-03-22
      • 2018-04-09
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多