Lecciones del módulo (2/4)
Agrupar con PARTITION BY
Agrupación con PARTICIÓN POR
Tener cálculos globales en cada fila es útil, pero a menudo no es suficiente. Es posible que deseemos calcular el promedio por categoría o por cliente, manteniendo el detalle original en cada fila.
Aquí es donde entra en juego PARTITION BY dentro de la cláusula OVER(...).
Cómo funciona la PARTICIÓN POR
Conceptualmente se comporta de manera similar a GROUP BY, pero en lugar de colapsar filas en el resultado, solo define el límite de la "ventana" de datos en la que operará la función para calcular el resultado de una sola fila.
SELECT
product_name,
category_id,
price,
AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;Cada fila de producto mantiene sus propios detalles y la columna cat_avg_price mostrará el promedio limitado a los productos de su misma categoría.
De la tabla 'productos', extraiga 'id', 'category_id' y 'price'. Agregue una columna 'category_total' que calcule la SUMA del 'precio' para cada 'category_id' usando funciones de ventana.
Mostrar pista
Utilice SUMA(precio) SOBRE(PARTICIÓN POR categoría_id).
Solución disponible después de 3 intentos
En la tabla "reseñas", muestre "product_id", "rating" y "avg_product_rating" (la calificación promedio dividida por producto). Mostrar todas las filas.
Mostrar pista
Utilice AVG (clasificación) y PARTICIÓN POR product_id. Transmítelo a NUMÉRICO si es necesario.
Solución disponible después de 3 intentos