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

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