Sobes.tech
Middle

Na čo sa používajú okienkové funkcie v SQL?

sobes.tech AI

Odpoveď od AI

Okienkové funkcie v SQL vykonávajú agregáciu dát v súbore riadkov spojených s aktuálnym riadkom, ale nezhlukujú výsledný súbor. To umožňuje vykonávať výpočty ako kumulatívne súčty, pohyblivé priemery alebo rebríčky, pričom zachovávajú všetky riadky pôvodného dotazu.

Hlavné ciele používania okienkových funkcií:

  • Rebríček: Priradenie rebríčka každej riadku v určitej okne.
    -- Získanie rebríčka zamestnancov podľa platu v rámci každého oddelenia
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Výpočet štatistík podľa skupín riadkov bez zoskupovania: Agregácia dát v rámci "okna" riadkov, pričom sa zachováva podrobnosť na úrovni riadku.
    -- Výpočet priemerného platu pre celé oddelenie pre každý riadok
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Porovnanie aktuálneho riadku s inými riadkami v okne: Prístup k dátam z predchádzajúcich alebo nasledujúcich riadkov v okne.
    -- Získanie platu predchádzajúceho zamestnanca v oddelení v zostupnom poradí podľa 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 kumulatívnym súčtom: Výpočet súčtov, priemerov a iných agregácií v rastúcom kumulatívnom poradí.
    -- Výpočet kumulatívneho súčtu predajov podľa dátumu
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Na rozdiel od bežných agregačných funkcií (GROUP BY), okienkové funkcie nespojujú riadky, čo ich robí mocným nástrojom pre analytické dotazy a podrobnú analýzu dát.