Saltar al contenido principal
eLearner.app
Módulo 13 · Lección 2 de 450/57 en el curso~15 min
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.

SQL
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.

Ejercicio#sql.m13.l2.e1
Intentos: 0Cargando...

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.

Cargando editor...
Mostrar pista

Utilice SUMA(precio) SOBRE(PARTICIÓN POR categoría_id).

Solución disponible después de 3 intentos

Ejercicio#sql.m13.l2.e2
Intentos: 0Cargando...

En la tabla "reseñas", muestre "product_id", "rating" y "avg_product_rating" (la calificación promedio dividida por producto). Mostrar todas las filas.

Cargando editor...
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