Sobes.tech
Middle — Senior

Ako vypočítať medián v SQL bez vstavaných funkcií? Ako spočítať počet riadkov v tabuľke? Poznáte okienkové funkcie?

sobes.tech AI

Odpoveď od AI

Medián v SQL bez vstavljene funkcije sa pomocou okienkových funkcií alebo poddotazov. Napríklad, pre tabuľku s číselným stĺpcom 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);

Tu:

  • ROW_NUMBER() čísluje riadky vzostupne podľa hodnoty.
  • COUNT(*) OVER () počíta celkový počet riadkov.
  • Vypočíta sa priemerná hodnota dvoch stredných prvkov (pre párny počet) alebo jedného stredného (pre nepárny počet).

Počet riadkov v tabuľke je veľmi jednoduchý:

SELECT COUNT(*) FROM your_table;

Okienkové funkcie sú funkcie, ktoré vykonávajú výpočty nad množinou súvisiacich riadkov s aktuálnym riadkom, bez zníženia výsledku na jeden riadok (na rozdiel od agregačných funkcií). Sú užitočné pre radenie, pohyblivé súčty, mediány atď.

Príklad okienkovej funkcie:

SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;

Táto numeruje riadky vzostupne podľa value.