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, diferentemente 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
:
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?
Utilizar GROUP BY
não é adequado para esta tarefa, pois 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 este problema.
Implementação
Podemos obter o resultado necessário utilizando 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
Can you explain how the PARTITION BY clause works in window functions?
What other aggregate functions can be used with window functions?
Can you show an example using ORDER BY within the window function?
Awesome!
Completion rate improved to 4.35
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, diferentemente 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
:
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?
Utilizar GROUP BY
não é adequado para esta tarefa, pois 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 este problema.
Implementação
Podemos obter o resultado necessário utilizando 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!