Sobes.tech
Middle

Pentru ce sunt folosite funcțiile de fereastră în SQL?

sobes.tech AI

Răspuns de la AI

Funcțiile de fereastră în SQL efectuează agregări de date într-un set de rânduri legate de rândul curent, dar nu grupează setul de rezultate. Acest lucru permite efectuarea de calcule precum sume cumulative, medii mobile sau clasificări, păstrând toate rândurile interogării originale.

Obiectivele principale ale utilizării funcțiilor de fereastră:

  • Clasament: Atribuirea unui rang fiecărui rând într-o fereastră determinată.
    -- Obțineți rangul angajaților după salariu în cadrul fiecărui departament
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Calcularea statisticilor pe grupuri de rânduri fără grupare: Agregarea datelor în interiorul unei "ferestre" de rânduri, păstrând detaliile la nivel de rând.
    -- Calculăm salariul mediu pentru întregul departament pentru fiecare rând
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Compararea rândului curent cu alte rânduri din fereastră: Acces la date din rândurile anterioare sau următoare din fereastră.
    -- Obțineți salariul angajatului anterior în departament în ordine descrescătoare a salariului
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Calculări cu sumă cumulativă: Calcularea sumelor, mediilor și altor agregări în sumă crescătoare.
    -- Calculăm suma cumulativă a vânzărilor pe dată
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Spre deosebire de funcțiile agregate obișnuite (GROUP BY), funcțiile de fereastră nu combină rândurile, ceea ce le face un instrument puternic pentru interogări analitice și analiză detaliată a datelor.