Sobes.tech
Middle

K čemu slouží okénkové funkce v SQL?

sobes.tech AI

Odpověď od AI

Okénkové funkce v SQL provádějí agregaci dat v sadě řádků souvisejících s aktuálním řádkem, ale neseskupují výsledkovou sadu. To umožňuje provádět výpočty, jako jsou kumulativní součty, klouzavé průměry nebo žebříčky, přičemž zachovávají všechny řádky původního dotazu.

Hlavní cíle použití okénkových funkcí:

  • Žebříček: Přiřazení žebříčku každému řádku v určitém okně.
    -- Získání žebříčku zaměstnanců podle platu v rámci každého oddělení
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Výpočet statistik podle skupiny řádků bez seskupování: Agregace dat uvnitř "okna" řádků, přičemž se zachovává detailnost na úrovni řádku.
    -- Výpočet průměrného platu pro celé oddělení pro každý řádek
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Porovnání aktuálního řádku s jinými řádky v okně: Přístup k datům z předchozích nebo následujících řádků v okně.
    -- Získání platu předchozího zaměstnance v oddělení v sestupném pořadí podle platu
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Výpočty s kumulativní sumou: Výpočet součtů, průměrů a dalších agregací v narůstající kumulaci.
    -- Výpočet kumulativního součtu prodeje podle data
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Na rozdíl od běžných agregačních funkcí (GROUP BY), okénkové funkce neslučují řádky, což je činí mocným nástrojem pro analytické dotazy a podrobnou analýzu dat.