Middle
За какво се използват прозоречните функции в SQL?
sobes.tech AI
Отговор от AI
Функциите за прозорец в SQL извършват агрегиране на данни в набор от редове, свързани с текущия ред, но без да групират резултатния набор. Това позволява извършване на изчисления като кумулативни суми, движещи се средни или класирания, като същевременно запазват всички редове на оригиналния заявка.
Основните цели на използването на функции за прозорец:
- Класиране: Назначаване на ранг на всеки ред в определен прозорец.
-- Получаване на ранг на служителите по заплата във всяко отделение SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Изчисляване на статистики по групи редове без групиране: Агрегиране на данни в рамките на "прозорец" от редове, като се запазва детайлността на ниво ред.
-- Изчисляване на средната заплата за цялото отделение за всеки ред SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Сравнение на текущия ред с други редове в прозореца: Достъп до данни от предишни или следващи редове в прозореца.
-- Получаване на заплатата на предишния служител в отделението по низходящ ред на заплатата SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Изчисления с натрупана сума: Изчисляване на суми, средни стойности и други агрегати по нарастващата сума.
-- Изчисляване на кумулативната сума на продажбите по дата SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
За разлика от обикновените агрегатни функции (GROUP BY), функциите за прозорец не обединяват редове, което ги прави мощен инструмент за аналитични заявки и подробен анализ на данни.