Você está muito perto da última consulta. O seguinte encontra um modo:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Acho que sua pergunta foi sobre vários modos:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
WHERE occurs = (select max(occurs)
from (select `value`, count(*) as occurs
from t200
group by `value`
) t
);
EDITAR:
Isso é muito mais fácil em quase qualquer outro banco de dados. MySQL não suporta nem
with
nem funções de janela/analítica. Sua consulta (mostrada abaixo) não faz o que você pensa que está fazendo:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
O
having
final cláusula refere-se à variável occurs
mas usa max(occurs)
. Por causa do uso de max(occurs)
esta é uma consulta de agregação que retorna uma linha, resumindo todas as linhas da subconsulta. A variável
occurs
não está usando para agrupamento. Então, que valor o MySQL usa? Ele usa um método arbitrário valor de uma das linhas na subconsulta. Esse valor arbitrário pode corresponder ou não. Mas, o valor vem apenas de uma linha. Não há iteração sobre ele.