Middle — Senior
Hogyan számoljuk ki a mediánt SQL-ben beépített függvény nélkül? Hogyan számoljuk meg a sorok számát egy táblában? Ismeri az ablakfüggvényeket?
sobes.tech MI
Válasz az MI-től
Mediana SQL-ben beépített függvény nélkül számítható ablakfüggvények vagy alkérdezések segítségével. Például, egy value nevű numerikus oszloppal rendelkező táblához:
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);
Itt:
ROW_NUMBER()számozza a sorokat növekvő érték szerint.COUNT(*) OVER ()számolja az összes sort.- Két középső elem átlagát veszi (páros szám esetén) vagy egy középső értéket (páratlan szám esetén).
Sorok számának lekérdezése a táblában nagyon egyszerű:
SELECT COUNT(*) FROM your_table;
Ablakfüggvények olyan függvények, amelyek egy sorhoz kapcsolódó sorok halmazán végeznek számításokat, anélkül, hogy az eredményt egy sorra redukálnák (ellentétben az aggregáló függvényekkel). Hasznosak rangsoroláshoz, mozgó összegekhez, mediánokhoz stb.
Példa ablakfüggvény:
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;
Ez növekvő sorrendben számozza a sorokat a value szerint.