Funções de Janela
Funções de janela são uma categoria de funções SQL que realizam cálculos sobre um conjunto de linhas relacionadas à linha atual dentro de uma janela ou partição definida.
Elas são utilizadas para realizar cálculos e análises sobre um subconjunto de linhas sem reduzir o conjunto de resultados, ao contrário das funções de agregação que normalmente reduzem o número de linhas retornadas por uma consulta.
Explicação
Considere a seguinte tabela Sales:
12SELECT * FROM sales
Se o objetivo for calcular a receita total para cada produto específico e exibi-la em uma coluna adicional dentro da tabela principal, em vez de gerar uma nova tabela agrupada, o resultado pode ser semelhante ao seguinte:
Mas como podemos fazer isso?
Usar GROUP BY não é adequado para esta tarefa porque esta cláusula reduz o número de linhas ao agrupá-las de acordo com critérios especificados, resultando apenas nos IDs e seus respectivos valores somados sendo retornados.
É por isso que as funções de janela são essenciais para resolver esse problema.
Implementação
Podemos obter o resultado necessário usando a seguinte consulta:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Uma sintaxe geral para criar uma função de janela pode ser descrita da seguinte forma:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: indica que uma consulta está prestes a começar;
- aggregation_func(): a função de agregação (por exemplo,
SUM,AVG,COUNT) que realiza um cálculo sobre um conjunto de linhas definido pela janela; - OVER: palavra-chave que introduz a função de janela;
- PARTITION BY: divide o conjunto de resultados em partições com base nos valores das colunas especificadas. A função de janela opera separadamente em cada partição;
- partition_column: a coluna utilizada para particionar o conjunto de resultados.
- ORDER BY: especifica a ordem das linhas dentro de cada partição;
- order_column: a coluna utilizada para ordenar as linhas dentro de cada partição.
- FROM: indica a tabela de origem da qual os dados são recuperados;
- table_name: o nome da tabela da qual os dados estão sendo selecionados.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 4.55
Funções de Janela
Deslize para mostrar o menu
Funções de janela são uma categoria de funções SQL que realizam cálculos sobre um conjunto de linhas relacionadas à linha atual dentro de uma janela ou partição definida.
Elas são utilizadas para realizar cálculos e análises sobre um subconjunto de linhas sem reduzir o conjunto de resultados, ao contrário das funções de agregação que normalmente reduzem o número de linhas retornadas por uma consulta.
Explicação
Considere a seguinte tabela Sales:
12SELECT * FROM sales
Se o objetivo for calcular a receita total para cada produto específico e exibi-la em uma coluna adicional dentro da tabela principal, em vez de gerar uma nova tabela agrupada, o resultado pode ser semelhante ao seguinte:
Mas como podemos fazer isso?
Usar GROUP BY não é adequado para esta tarefa porque esta cláusula reduz o número de linhas ao agrupá-las de acordo com critérios especificados, resultando apenas nos IDs e seus respectivos valores somados sendo retornados.
É por isso que as funções de janela são essenciais para resolver esse problema.
Implementação
Podemos obter o resultado necessário usando a seguinte consulta:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Uma sintaxe geral para criar uma função de janela pode ser descrita da seguinte forma:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: indica que uma consulta está prestes a começar;
- aggregation_func(): a função de agregação (por exemplo,
SUM,AVG,COUNT) que realiza um cálculo sobre um conjunto de linhas definido pela janela; - OVER: palavra-chave que introduz a função de janela;
- PARTITION BY: divide o conjunto de resultados em partições com base nos valores das colunas especificadas. A função de janela opera separadamente em cada partição;
- partition_column: a coluna utilizada para particionar o conjunto de resultados.
- ORDER BY: especifica a ordem das linhas dentro de cada partição;
- order_column: a coluna utilizada para ordenar as linhas dentro de cada partição.
- FROM: indica a tabela de origem da qual os dados são recuperados;
- table_name: o nome da tabela da qual os dados estão sendo selecionados.
Obrigado pelo seu feedback!