Junior — Middle
Имали ли сте опит с използването на прозоречни функции при работа с SQL заявки?
sobes.tech AI
Отговор от AI
Да, при работа с SQL заявки използвах оконни функции (window functions). Те позволяват извършване на изчисления върху набор от редове, свързани с текущия ред, без да се групират резултатите, което е удобно за анализи и сложни заявки.
Основни оконни функции:
ROW_NUMBER()— номериране на редовете в прозорецаRANK(),DENSE_RANK()— класиране с вземане предвид равенстватаSUM(),AVG(),COUNT()— агрегатни функции върху прозореца
Пример: получаване на списък с служители с техните заплати и редовия им номер по отдел в низходящ ред на заплатата:
SELECT
employee_id,
department_id,
salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS salary_rank
FROM employees;
Тук PARTITION BY разделя данните по отдели, а ORDER BY задава реда вътре във всеки отдел. Оконните функции позволяват извършване на сложни аналитични заявки без да се губи детайлност.