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

MySQL-forespørgsel for at få de modale gennemsnit af en kolonne?

For at få råtæller

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

For at få det modale gennemsnit (dette vil vise flere værdier, hvis der er ligheder for det højeste antal)

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

Dette bruger et MySQL-trick med at bruge en variabel til at gemme det maksimale antal, når det går gennem den aggregerede underforespørgsel. Oversigt over operationer

  • O(n):scan tabellen én gang, og opbyg tællingerne (T1)
  • O(n):scan den afledte tabel T1 og behold det højeste antal i variablen @r (T2)
  • O(n):scan den afledte tabel T2 og filtrer kun for højderne med det højeste antal



  1. SQL-forespørgsel:Find maks. 2 af 3 tal, og gem det i en anden kolonne

  2. Opdater sql bit felt i databasen

  3. Glem ikke at downloade den nye version DBeaver EE 7.2

  4. Sådan bruger du phpMyAdmin til at optimere en database