sql >> Databáze >  >> RDS >> Mysql

Použití MEDIAN vedle funkcí MAX, MIN a AVG v MySQL

Medián můžete vypočítat pomocí GROUP BY v MySQL, i když není vestavěná žádná funkce mediánu.

Zvažte tabulku:

Acrington 200,00Acrington 200,00Acrington 300,00Acrington 400,00Bulingdon 200,00Bulingdon 300,00Bulingdon 400,00Bulingdon 500,00Cardington 400,00Cardington 100,00Cardington 100,00Cardington30.0 

Pro každý řádek můžete spočítat počet podobných položek, kterých je méně. Můžete také spočítat, kolik hodnot je menší nebo rovno:

name V <<=Acrington 200,00 0 2ACRINGTON 200,00 0 2ACRIGHTON 300,00 2 3ACRINGTON 400,00 3 4Bulingdon 200,00 0 1Bulingdon 300,00 1 2Cardington 151,00 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 33 3 33 3 33 3 3 33 33 3 33 33 3 3 let 3 33,00 1 2CARDINGTON 31.00 3. 5

S dotazem

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

Střední hodnota se objeví, když počet menší nebo stejný je poloviční než počet položek

  • Acrington má 4 položky. Polovina z toho je 2, což je v rozsahu 0..2 (odpovídá 200,00) a také v rozsahu 2..3 (odpovídá 300,00)

  • Bullingdon má také 4 položky. 2 je v rozsahu 1..2 (hodnota 300,00) a 2..3 (hodnota 400,00)

  • Cardington má 5 položek. Hodnota 2,5 je mezi 2 a 3, což odpovídá Cardington 151.

Střední hodnota je průměrem minimálních a maximálních hodnot vrácených:

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

Což dává:

Acrington 200,00Acrington 200,00Acrington 300,00Bulingdon 300,00Bulingdon 400,00Cardington 151,00 

Konečně můžeme získat medián:

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

Dávání

Acrington 250,000000Bulingdon 350,000000 Cardington 151,000000 


  1. Oracle – ORA-06502:PL/SQL:numerická nebo hodnotová chyba (DBMS_OUTPUT)

  2. Jak převést místní čas na UTC?

  3. Jak mohu zachovat značky CDATA při ukládání výsledků dotazu do proměnné Xml?

  4. MySQL vyhledávání necitlivé na diakritiku (arabština)