Middle
Para que são usadas as funções de janela em SQL?
sobes.tech IA
Resposta da IA
As funções de janela em SQL realizam agregações de dados num conjunto de linhas relacionadas com a linha atual, mas sem agrupar o conjunto de resultados. Isto permite realizar cálculos como somas acumuladas, médias móveis ou classificação, mantendo todas as linhas da consulta original.
Os principais objetivos do uso de funções de janela:
- Classificação: Atribuir uma classificação a cada linha numa janela determinada.
-- Obter a classificação dos funcionários por salário dentro de cada departamento SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Cálculo de estatísticas por grupo de linhas sem agrupamento: Agregação de dados dentro de uma "janela" de linhas, mantendo a granularidade ao nível de linha.
-- Calcular o salário médio por todo o departamento para cada linha SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Comparação da linha atual com outras linhas na janela: Acesso a dados de linhas anteriores ou posteriores na janela.
-- Obter o salário do funcionário anterior no departamento em ordem decrescente de salário SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Cálculos com soma acumulada: Cálculo de somas, médias e outras agregações acumulando do início.
-- Calcular a soma acumulada de vendas por data SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
Ao contrário das funções de agregação normais (GROUP BY), as funções de janela não colapsam linhas, tornando-as uma ferramenta poderosa para consultas analíticas e análise detalhada de dados.