Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Funções de Janela | Alguns Tópicos Adicionais
Técnicas Avançadas em SQL

bookFunçõ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:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

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.
question mark

Qual cláusula é usada para definir a partição de uma função de janela?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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

bookFunçõ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:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

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.
question mark

Qual cláusula é usada para definir a partição de uma função de janela?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3
some-alt