Sobes.tech
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.