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.