Sobes.tech
Middle — Senior

Kako izračunati medijanu u SQL bez ugrađene funkcije? Kako izračunati broj redova u tabeli? Da li poznajete funkcije prozora?

sobes.tech АИ

Одговор од АИ

Medijana u SQL bez ugrađene funkcije može se izračunati korišćenjem funkcija prozora ili podupita. Na primer, za tabelu sa numeričkim kolonom 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);

Ovde:

  • ROW_NUMBER() numeriše redove rastuće po vrednosti.
  • COUNT(*) OVER () broji ukupan broj redova.
  • Izračunava se srednja vrednost dva centralna elementa (za paran broj) ili jednog centralnog (za neparan broj).

Brojanje redova u tabeli je vrlo jednostavno:

SELECT COUNT(*) FROM your_table;

Funkcije prozora su funkcije koje vrše proračune nad skupom povezanih redova sa trenutnim redom, bez smanjenja rezultata na jedan red (za razliku od agregatnih funkcija). Korisne su za rangiranje, pokretne sume, medijane itd.

Primer funkcije prozora:

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

Ova numeriše redove rastuće po value.