Eu tenho a seguinte tabela:
id | ano
10 | 2000
11 | 2001
10 | 2002
12 | 2003
11 | 2004
13 | 2005
10 | 2006
10 | 2007
De acordo com o id, como 10 aparece mais, a seleção deve dar 10 para essa tabela. Eu sei que isso é fácil, mas eu não poderia ir além de COUNT (*).
Respostas:
2 para resposta № 1O seguinte SQL funcionará quando houver mais de um ID com a contagem máxima:
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 )
O primeiro (mais interno) SELECT
só vai contar cada id, isso é usado no segundo SELECT
para determinar a contagem máxima e isso será usado no final (mais externo) SELECT
para exibir apenas os IDs corretos.
Espero que ajude.
2 para resposta № 2
Você precisa de um grupo por ordem - junto com um limite:
SELECT id FROM sometable GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1
Isto irá agrupar a tabela por id, ordená-los em ordem decrescente por sua contagem e escolher a primeira linha (aquela com maior contagem).