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.