sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

MySQL-fråga för att få modala medelvärden för en kolumn?

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



  1. import.php:Saknas parameter:import_type error i phpMyAdmin?

  2. Automatisera överföring av csv-fil till MySQL

  3. Hur kan jag ställa in en standardsortering för tabeller i PHPMyAdmin (dvs alltid primärnyckel - fallande)

  4. Inaktivera ajax i phpmyadmin 4.0.5