Sobes.tech
Middle — Senior

Jak obliczyć medianę w SQL bez wbudowanej funkcji? Jak policzyć liczbę wierszy w tabeli? Czy znasz funkcje okienkowe?

sobes.tech AI

Odpowiedź od AI

Mediana w SQL bez wbudowanej funkcji można obliczyć, używając funkcji okienkowych lub podzapytań. Na przykład, dla tabeli z kolumną numeryczną 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);

Tutaj:

  • ROW_NUMBER() numeruje wiersze w porządku rosnącym według wartości.
  • COUNT(*) OVER () liczy łączną liczbę wierszy.
  • Oblicza się średnią z dwóch środkowych elementów (dla parzystej liczby) lub jednego środkowego (dla nieparzystej).

Liczenie liczby wierszy w tabeli jest bardzo proste:

SELECT COUNT(*) FROM your_table;

Funkcje okienkowe to funkcje, które wykonują obliczenia na zestawie powiązanych wierszy z bieżącym wierszem, nie redukując wyniku do jednej linii (w odróżnieniu od funkcji agregujących). Są przydatne do tworzenia rankingów, sum ruchomych, median itp.

Przykład funkcji okienkowej:

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

Numeruje wiersze w kolejności rosnącej według value.