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

MySQL-query om de modale gemiddelden van een kolom te krijgen?

Om ruwe tellingen te krijgen

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

Om het modale gemiddelde te krijgen (dit toont meerdere waarden als er banden zijn voor het hoogste aantal)

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

Dit gebruikt een MySQL-truc om een ​​variabele te gebruiken om het maximale aantal op te slaan terwijl het door de geaggregeerde subquery gaat. Samenvatting van de operaties

  • O(n):scan de tabel één keer en bouw de tellingen op (T1)
  • O(n):scan de afgeleide tabel T1 en bewaar de hoogste telling in de variabele @r (T2)
  • O(n):scan de afgeleide tabel T2 en filter alleen op de hoogten met het hoogste aantal



  1. MySql phpMyAdmin:automatisch twee databases repliceren/synchroniseren

  2. Hoe worden de knoppen 'bewerken', 'kopiëren' en 'verwijderen' weergegeven in phpMyAdmin?

  3. Hoe activeer ik mysqli met wampserver?

  4. Een kolom invoegen in een reeds bestaande tabel in phpmyadmin