【问题标题】:SQL Select most common values [duplicate]SQL选择最常见的值[重复]
【发布时间】:2012-03-24 17:06:26
【问题描述】:

我对 SQL 很陌生(我正在使用 MySQL),需要一些帮助。我目前正在尝试从名为 PERSON 的表中选择最常见的年龄。假设 PERSON 有一个 AGE 列,其值为:10、10、20、20、30。查询应返回值 10 和 20。

以下查询仅检索顶行 (20):

SELECT AGE FROM PERSON GROUP BY AGE ORDER BY COUNT(*) DESC LIMIT 1;

我的另一个想法是尝试类似:

SELECT AGE FROM PERSON GROUP BY AGE HAVING COUNT(AGE) = MAX(COUNT(AGE));

这会返回一个错误,说明它对组函数的使用无效。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这样就可以了:

    select age from persons
    group by age
    having count(*) = (
      select count(*) from persons
      group by age
      order by count(*) desc
      limit 1)
    

    【讨论】:

      【解决方案2】:
      SELECT *, COUNT(AGE) as age_count
      FROM PERSON
      GROUP BY AGE
      ORDER BY age_count DESC
      LIMIT 1
      

      无法在这里测试,但应该可以。

      【讨论】:

        【解决方案3】:
        WITH x AS (
          SELECT age, COUNT(*) numOfAge
            FROM person
            GROUP BY age
        )
        SELECT age
          FROM x
          WHERE numOfAge = ( SELECT MAX(numOfAge) FROM x)
          ORDER BY age
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-23
          • 1970-01-01
          • 1970-01-01
          • 2018-03-24
          • 2011-10-07
          • 1970-01-01
          • 2021-07-25
          相关资源
          最近更新 更多