För att få råa räkningar
select window_height, count(*) totalusers
from tbl
group by window_height
order by totalusers desc # or by window_height
För att få det modala medelvärdet (detta kommer att visa flera värden om det finns oavgjort för det högsta antalet)
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
Detta använder ett MySQL-trick för att använda en variabel för att lagra maxantalet när det går igenom den aggregerade underfrågan. Sammanfattning av verksamheten
- O(n):skanna tabellen en gång och bygg antalet (T1)
- O(n):skanna den härledda tabellen T1 och behåll det högsta antalet i variabeln @r (T2)
- O(n):skanna den härledda tabellen T2 och filtrera endast efter höjderna med det högsta antalet