Menu
CoddyTech

Funções de agregação

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

Com OVER (ORDER BY ...), funções de agregação como AVG() ou MAX() são calculadas sobre as linhas até a linha atual, incluindo as linhas que empatam com ela no valor de ORDER BY. Sem ORDER BY dentro de OVER, elas são calculadas sobre todas as linhas, então cada linha recebe o mesmo valor.
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êsreceitamax_revenue
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 acontece porque, quando encontra uma receita maior, ela descarta a antiga e usa a maior até então.

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

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
mêsreceitaavg_revenue
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
440East40
520East40
660West60
755West60
861East61

Agora, o valor máximo é calculado separadamente para cada região. As regiões Leste e Oeste mantêm seus próprios valores máximos acumulados de forma independente.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • books: book, page, words

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

  1. O número máximo de palavras encontrado em qualquer página desse livro
  2. O número médio de palavras por página no livro inteiro
  3. A diferença entre o número de 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

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

Pratique por conta própria: Playground de SQL