Agregar a través de un join en SQL
Agrupa después de unir para resumir las filas hijas por cada padre.
SELECT
p.name AS product,
COUNT(DISTINCT i.order_id) AS orders,
SUM(i.quantity) AS units,
ROUND(SUM(i.quantity * p.price), 2) AS revenue
FROM products AS p
JOIN order_items AS i
ON i.sku = p.sku
GROUP BY p.name
HAVING SUM(i.quantity) > 10
ORDER BY revenue DESC;
Cómo funciona
- Las columnas del padre van al
GROUP BY; las del hijo, a los agregados. COUNT(DISTINCT ...)evita contar doble las filas multiplicadas por el join.HAVINGfiltra después sobre el agregado.
Palabras clave y builtins usados aquí
ASBYCOUNTDESCDISTINCTFROMGROUPHAVINGJOINONORDERSELECTSUM
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 261
- Tokens
- 78
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 55 segundos.
Paso 9 de 9 en Joins; paso 17 de 22 en Joins y agregación.