Chcete-li získat hrubé počty
select window_height, count(*) totalusers
from tbl
group by window_height
order by totalusers desc # or by window_height
Chcete-li získat modální průměr (pokud existuje shoda pro nejvyšší počet, zobrazí se více hodnot)
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
To využívá trik MySQL s použitím proměnné k uložení maximálního počtu, když prochází agregovaným poddotazem. Shrnutí operací
- O(n):jednou prohledejte tabulku a vytvořte počty (T1)
- O(n):prohledejte odvozenou tabulku T1 a ponechte nejvyšší počet v proměnné @r (T2)
- O(n):prohledejte odvozenou tabulku T2 a filtrujte pouze výšky s nejvyšším počtem