phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Consulta MySQL para obter as médias modais de uma coluna?


Para obter contagens brutas
select window_height, count(*) totalusers
from tbl
group by window_height
order by totalusers desc  # or by window_height

Para obter a média modal (isso mostrará vários valores se houver empates para a contagem mais alta)
select window_height, totalusers
from (
    select @r := if(totalusers>@r,totalusers,@r) maxcount, window_height, totalusers
    from (select @r:=0) initvars, (
        select window_height, count(*) totalusers
        from tbl
        group by window_height
    ) X ) Y
where totalusers = @r

Isso usa um truque do MySQL de usar uma variável para armazenar a contagem máxima conforme ela passa pela subconsulta agregada. Resumo das operações
  • O(n):digitaliza a tabela uma vez e cria as contagens (T1)
  • O(n):verifica a tabela derivada T1 e mantém a contagem mais alta na variável @r (T2)
  • O(n):verifique a tabela derivada T2 e filtre apenas as alturas com a contagem mais alta