Middle — Senior
Cum se calculează mediana în SQL fără funcție încorporată? Cum se numără numărul de rânduri dintr-un tabel? Cunoști funcțiile de fereastră?
sobes.tech AI
Răspuns de la AI
Mediana în SQL fără funcție încorporată poate fi calculată folosind funcții de fereastră sau subinterogări. De exemplu, pentru un tabel cu o coloană numerică 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);
Aici:
ROW_NUMBER()numerotează rândurile în ordine crescătoare după valoare.COUNT(*) OVER ()numără numărul total de rânduri.- Se ia media celor două elemente centrale (pentru număr par) sau al unuia (pentru număr impar).
Numărarea rândurilor din tabel este foarte simplă:
SELECT COUNT(*) FROM your_table;
Funcțiile de fereastră sunt funcții care efectuează calcule pe un set de rânduri legate de rândul curent, fără a reduce rezultatul la un singur rând (spre deosebire de funcțiile agregate). Sunt utile pentru clasificare, calculul sumelor mobile, mediane etc.
Exemplu de funcție de fereastră:
SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;
Aceasta numerotează rândurile în ordine crescătoare după value.