Sobes.tech
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 задава реда вътре във всеки отдел. Оконните функции позволяват извършване на сложни аналитични заявки без да се губи детайлност.