Sobes.tech
Middle

Как да разделим данните на групи с помощта на оконни функции в SQL?

sobes.tech AI

Отговор от AI

Функциите за прозорец в SQL позволяват извършване на изчисления върху групи от редове, без да намаляват резултата до един ред, както при GROUP BY. Те работят с набор от редове (прозорец), определен за всеки ред.

За разделяне на данните на групи и прилагане на функции за прозорец се използва конструкцията OVER (PARTITION BY ...). Например:

SELECT
  employee_id,
  department_id,
  salary,
  RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS salary_rank
FROM employees;

Тук данните се разделят на групи по department_id, и вътре във всяка група се изчислява рангът на заплатата.

По този начин функциите за прозорец позволяват анализ на данни по групи, като същевременно запазват всички редове на оригиналната таблица.