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ês | receita | região |
| 4 | 40 | Leste |
| 5 | 20 | Leste |
| 6 | 60 | Oeste |
| 7 | 55 | Oeste |
| 8 | 61 | Leste |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Isso retornará:
| mês | receita | receita_máxima |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
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ês | receita | receita_média |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.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 table1Nos daria:
| month | revenue | region | max_revenue |
| 4 | 40 | Leste | 40 |
| 5 | 20 | Leste | 40 |
| 6 | 60 | Oeste | 60 |
| 7 | 55 | Oeste | 60 |
| 8 | 61 | Leste | 61 |
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.
Desafio
FácilTabelas 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:
- O número máximo de palavras encontradas em qualquer página desse livro
- A média de palavras por página para o livro inteiro
- 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:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_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 tableUse 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 tableIsso calcula o máximo separadamente para cada categoria, mantendo cálculos cumulativos independentes.
Experimente você mesmo
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate Contractor12Window Functions part 2
RANK & DENSE_RANK FunctionsRecap - RANK & DENSE_RANKNTILE FunctionAggregation FunctionsROWS & RANGE Criterion