Sobes.tech
Middle — Senior

Jak spočítat medián v SQL bez vestavěné funkce? Jak spočítat počet řádků v tabulce? Znáte okénkové funkce?

sobes.tech AI

Odpověď od AI

Medián v SQL bez vestavěné funkce lze spočítat pomocí okenních funkcí nebo poddotazů. Například pro tabulku s číselným sloupcem 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);

Zde:

  • ROW_NUMBER() čísluje řádky vzestupně podle hodnoty.
  • COUNT(*) OVER () počítá celkový počet řádků.
  • Vypočítá se průměr dvou středních prvků (pro sudý počet) nebo jednoho středního (pro lichý počet).

Počet řádků v tabulce je velmi jednoduchý:

SELECT COUNT(*) FROM your_table;

Okenní funkce jsou funkce, které provádějí výpočty nad sadou řádků spojených s aktuálním řádkem, aniž by výsledek zredukovaly na jeden řádek (na rozdíl od agregačních funkcí). Jsou užitečné pro řazení, pohyblivé součty, mediány atd.

Příklad okenní funkce:

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

Tato očísluje řádky vzestupně podle value.