Middle — Senior
Kuidas arvutada mediaan SQL-is ilma sisseehitatud funktsioonita? Kuidas arvutada tabeli ridade arv? Kas teate akna funktsioone?
sobes.tech AI
Vastus AI-lt
SQL-is mediaan ilma sisseehitatud funktsiooni saab arvutada akna funktsioonide või alamküsitluste abil. Näiteks tabeli puhul, kus on arvuline veerg value:
SELECT AVG(value) AS median FROM (
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn, COUNT(*) OVER () AS cnt
FROM your_table
) sub
WHERE rn IN ((cnt + 1) / 2, (cnt + 2) / 2);
Siin:
ROW_NUMBER()nummerdab read kasvavas järjekorras väärtuse järgi.COUNT(*) OVER ()arvutab kogu ridade arvu.- Arvutatakse kahe keskse elemendi keskmine (paarisarvude puhul) või ühe keskse (paaritu arvu puhul).
Ridade arvu arvutamine tabelis on väga lihtne:
SELECT COUNT(*) FROM your_table;
Aknafunktsioonid on funktsioonid, mis teevad arvutusi seotud ridade kogumiga, mis on seotud praeguse reaga, ilma tulemusi ühe reaga kokku võtmata (vastupidiselt agregaatfunktsioonidele). Need on kasulikud järjestamiseks, liikuvate summade, mediaanide jms arvutamiseks.
Näide akna funktsioonist:
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;
See numeerib read kasvavas järjekorras value järgi.