我是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));
这会返回一个错误,指出它是无效的使用组功能。
非常感谢任何帮助。谢谢!
答案 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