sql >> Database teknologi >  >> RDS >> Mysql

Brug af MEDIAN sammen med funktionerne MAX, MIN og AVG i MySQL

Du kan beregne medianen med GROUP BY i MySQL, selvom der ikke er nogen medianfunktion indbygget.

Overvej tabellen:

Acrington 200.00Acrington 200.00Acrington 300.00Acrington 400.00Bulingdon 200.00Bulingdon 300.00Bulingdon 400.00Bulingdon 500.00Cardington 100.00Cardington 100.00Cardington .00.00Cardington .00Cardington 100.00Cardington .001Cardington 

For hver række kan du tælle antallet af lignende varer, der er færre. Du kan også tælle, hvor mange værdier der er mindre end eller lig med:

  Navn v <5 

Med forespørgsel

VÆLG navn,v, (VÆLG ANTAL(1) FRA salg WHERE v 

Medianværdien opstår, når antallet af mindre end eller lig er halvdelen af ​​antallet af varer

  • Acrington har 4 genstande. Halvdelen af ​​dette er 2, som er i intervallet 0..2 (svarende til 200.00) og også i intervallet 2..3 (svarende til 300.00)

  • Bullingdon har også 4 stk. 2 er i intervallet 1..2 (værdi 300,00) og 2..3 (værdi 400,00)

  • Cardington har 5 genstande. Værdien 2,5 er mellem 2 og 3, hvilket svarer til Cardington 151.

Medianværdien er middelværdien af ​​min- og maksværdierne returneret af:

SELECT cs.name,v FROM (SELECT name,v, (SELECT COUNT(1) FROM sale WHERE v 

Hvilket giver:

Acrington 200.00Acrington 200.00Acrington 300.00Bulingdon 300.00Bulingdon 400.00Cardington 151.00 

Endelig kan vi få medianen:

VÆLG navn,(MAX(v)+MIN(v))/2 FROM(SELECT cs.name,v FROM (SELECT name,v, (SELECT COUNT(1) FROM sale WHERE v

Giver

Acrington 250.000000Bulingdon 350.000000Cardington 151.000000 


  1. kolonne ikke tilladt her fejl i INSERT-sætning

  2. MySQL Syntaks fejlmeddelelse Operand skal indeholde 1 kolonne(r)

  3. Hvordan forbinder man fra docker-compose til Host PostgreSQL?

  4. Unikt indeks over postgresql-partitioner