Menu
Coddy logo textTech

Aggregation Functions

Parte da seção Fundamentos do Journey de SQL da Coddy — lição 68 de 72.

Funções de agregação são usadas para calcular o AVG() ou MAX() ou qualquer outra função de agregação até a linha atual.
Por exemplo, poderíamos calcular a receita máxima que obtivemos até cada período final:

mêsreceitaregião
440Leste
520Leste
660Oeste
755Oeste
861Leste
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

Isso retornará:

mêsreceitareceita_máxima
44040
52040
66060
75560
86161

Para os meses 4 e 5, a receita máxima é 40, para os meses 6 e 7 é 60, e para o mês 8 é 61. Isso ocorre porque, quando encontra uma nova receita maior, ele descarta a antiga e utiliza a maior até o momento.

Para a função AVG(), ela ficará assim:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
mêsreceitareceita_média
44040
52030
66040
75543.75
86147.2

Também podemos agrupar nossos cálculos por categorias específicas usando PARTITION BY. Por exemplo:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

Nos daria:

monthrevenueregionmax_revenue
440Leste40
520Leste40
660Oeste60
755Oeste60
861Leste61

Agora o máximo é calculado separadamente para cada região. A região Leste e a região Oeste mantêm seus próprios máximos acumulados de forma independente.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>books</strong>: <strong>book</strong>, <strong>page</strong>, <strong>words</strong>

Para cada livro, exiba o nome do livro, o número da página, o número de palavras em cada página e calcule:

  1. O número máximo de palavras encontradas em qualquer página desse livro
  2. A média de palavras por página para o livro inteiro
  3. A diferença entre as palavras da página atual e a média de palavras por página do livro

Exiba os resultados ordenados por livro e número da página.

Retorne as seguintes colunas:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

Folha de consulta

Funções de janela com agregação calculam valores em um conjunto de linhas relacionadas à linha atual. Use a cláusula OVER com ORDER BY para cálculos cumulativos:

SELECT column, 
       MAX(column) OVER (ORDER BY column ASC) as running_max,
       AVG(column) OVER (ORDER BY column ASC) as running_avg
FROM table

Use PARTITION BY para agrupar cálculos por categorias:

SELECT column, category,
       MAX(column) OVER (PARTITION BY category ORDER BY column ASC) as max_per_category
FROM table

Isso calcula o máximo separadamente para cada categoria, mantendo cálculos cumulativos independentes.

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos