SQL选择最常见的值

时间:2012-03-24 17:06:27

标签: mysql sql

我是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));

这会返回一个错误,指出它是无效的使用组功能。

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:3)

SELECT *, COUNT(AGE) as age_count
FROM PERSON
GROUP BY AGE
ORDER BY age_count DESC
LIMIT 1

无法在此测试,但它应该可以正常工作。

答案 1 :(得分:3)

这样做:

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

答案 2 :(得分:0)

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
相关问题