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ê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 | max_revenue |
| 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 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ês | receita | avg_revenue |
| 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 | East | 40 |
| 5 | 20 | East | 40 |
| 6 | 60 | West | 60 |
| 7 | 55 | West | 60 |
| 8 | 61 | East | 61 |
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.
Desafio
FácilTabelas 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:
- O número máximo de palavras encontrado em qualquer página desse livro
- O número médio de palavras por página no livro inteiro
- 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:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
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
4Mais palavras-chave
A palavra-chave INA palavra-chave BETWEENA palavra-chave LIKEA palavra-chave ASRecapitulação - Modelos de celulares2Condições
Noções básicas de condiçõesA palavra-chave ANDA palavra-chave ORA palavra-chave NOTCombinação de várias condiçõesParêntesesBooleanos3Formato de retorno específico
Valores nulosOrdenar resultados - Parte 1Ordenar resultados - Parte 2Recapitulação - Empresa de segurança cibernéticaLimitar o número de registrosRecapitulação - Fábrica de veículos6Desafios introdutórios
Revisão - Eleição parlamentarRevisão - Prisão criminal pela políciaRevisão - Recipiente de bebidas de barRevisão - Projetar novas colunas9Múltiplas tabelas
JOIN básico – Parte 1JOIN básico – Parte 2Revisão – JOINAuto-JOINRevisão – Auto-JOINUNIONSimplifique consultas com a palavra-chave WITHRevisão – Consultas com WITHRevisão – Prestador de serviços imobiliários12Funções de Janela parte 2
Funções RANK e DENSE_RANKRecapitulação - RANK e DENSE_RANKFunção NTILEFunções de agregaçãoCritério ROWS e RANGEPratique por conta própria: Playground de SQL