Aggregation Functions
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 68 de 72.
Las funciones de agregación se utilizan para calcular el AVG() o MAX() o cualquier otra función de agregación hasta la fila actual.
Por ejemplo, podríamos calcular los ingresos máximos que obtuvimos hasta cada periodo de finalización:
| mes | ingresos | región |
| 4 | 40 | Este |
| 5 | 20 | Este |
| 6 | 60 | Oeste |
| 7 | 55 | Oeste |
| 8 | 61 | Este |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Esto devolverá:
| mes | ingresos | ingresos_máximos |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
Para los meses 4 y 5, los ingresos máximos son 40, para los meses 6 y 7 son 60, y para el mes 8 son 61. Esto se debe a que cuando encuentra unos nuevos ingresos mayores, descarta los anteriores y utiliza los mayores hasta el momento.
Para la función AVG() se verá así:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| mes | ingresos | ingresos_promedio |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
También podemos agrupar nuestros cálculos por categorías específicas usando PARTITION BY. Por ejemplo:
SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1Nos daría:
| mes | ingresos | región | ingresos_máximos |
| 4 | 40 | Este | 40 |
| 5 | 20 | Este | 40 |
| 6 | 60 | Oeste | 60 |
| 7 | 55 | Oeste | 60 |
| 8 | 61 | Este | 61 |
Ahora el máximo se calcula por separado para cada región. La región Este y la región Oeste mantienen sus propios máximos acumulados de forma independiente.
Desafío
FácilTablas y columnas disponibles:
<strong>books</strong>:<strong>book</strong>,<strong>page</strong>,<strong>words</strong>
Para cada libro, muestra el nombre del libro, sus páginas totales, el número de palabras en cada página y calcula:
- El número máximo de palabras encontradas en cualquier página de ese libro
- El promedio de palabras por página para todo el libro
- La diferencia entre las palabras de la página actual y el promedio de palabras por página del libro
Muestra los resultados ordenados por libro y número de página.
Devuelve las siguientes columnas:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
Hoja de referencia
Las funciones de ventana con agregación calculan valores a través de un conjunto de filas relacionadas con la fila actual. Use la cláusula OVER con ORDER BY para cálculos acumulativos:
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 categorías:
SELECT column, category,
MAX(column) OVER (PARTITION BY category ORDER BY column ASC) as max_per_category
FROM tableEsto calcula el máximo por separado para cada categoría, manteniendo cálculos acumulativos independientes.
Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones 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