/ / Encontrar um elemento com max. não de aparecer em SQL - mysql, sql, select, count

Encontrar um elemento com max. não de aparecer no SQL - mysql, sql, select, count

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 № 1

O 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).