CTE encadenadas en SQL
Varias CTE separadas por comas, cada una libre de construir sobre la anterior.
WITH monthly AS (
SELECT
STRFTIME('%Y-%m', placed_at) AS month,
SUM(total) AS revenue
FROM orders
WHERE status = 'paid'
GROUP BY month
),
ranked AS (
SELECT
month,
revenue,
RANK() OVER (
ORDER BY revenue DESC
) AS position
FROM monthly
)
SELECT *
FROM ranked
WHERE position <= 3;
Cómo funciona
- Así un reporte largo se mantiene legible: un paso por CTE.
- Una CTE posterior selecciona de una anterior por su nombre.
- El SELECT final une las piezas.
Palabras clave y builtins usados aquí
ASBYDESCFROMGROUPORDERSELECTSUMWHEREWITHmonthposition
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 279
- Tokens
- 64
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 43 segundos.
Paso 2 de 3 en Expresiones de tabla comunes; paso 5 de 24 en Analítica y reportes.