Joins y agregación
22 pasos en 5 series de SQL.
Donde SQL empieza a valer la pena aprenderlo en serio. Primero la agregación, luego GROUP BY y HAVING, y después los joins en sí: inner, left, cross, self, y el patrón de anti-join que sorprende a más de uno.
Las operaciones de conjuntos lo cierran. Veintidós pasos, y el modelo mental que hay que construir es que un join produce filas y todo lo demás las filtra o las pliega.
Agregación
- Funciones de agregaciónCOUNT, SUM, AVG, MIN y MAX colapsan muchas filas en una sola fila de resumen.
- Contar valores únicosCOUNT DISTINCT responde cuántos valores distintos guarda una columna.
- Qué cuenta COUNTCOUNT(*) cuenta filas; COUNT(columna) cuenta valores. Los NULL marcan la diferencia.
- La fila detrás del máximoMAX te da el valor. Conseguir la fila de donde salió es otra pregunta.
Agrupación
- GROUP BYGROUP BY reparte las filas en grupos y agrega cada uno por separado.
- Agrupar por varias columnasAgrupa por dos columnas y cada par distinto se vuelve una fila.
- HAVING filtra gruposWHERE filtra filas antes de agrupar; HAVING filtra los grupos después.
- Colapsar un grupo en una cadenaA veces la respuesta no es un número sino la lista misma.
Joins
- INNER JOINUn inner join conserva solo las filas que coinciden en ambos lados.
- LEFT JOINUn left join conserva cada fila izquierda y rellena con NULL cuando nada coincide.
- USING y los nombres de columnaCuando ambos lados llaman igual a la columna, USING lo dice una sola vez.
- RIGHT y FULL OUTER JOINLEFT conserva las filas del lado izquierdo. RIGHT y FULL conservan las demás.
- CROSS JOINCada fila de la izquierda emparejada con cada fila de la derecha — esta vez a propósito.
- Self joinUna tabla puede unirse consigo misma cuando una fila apunta a otra de su misma clase.
- Join de tres tablasLos joins se encadenan: cada tabla nueva se une a lo ya ensamblado.
- Encontrar filas sin coincidenciaEl anti join: un outer join, y luego quedarte solo con las filas que no coincidieron.
- Agregar a través de un joinAgrupa después de unir para resumir las filas hijas por cada padre.
Operaciones de conjuntos
- UNION y UNION ALLUNION apila dos resultados que comparten la misma forma de columnas.
- Ordenar un UNIONEl ORDER BY de un UNION pertenece al resultado completo, no a la última rama.
- EXCEPT e INTERSECTDiferencia e intersección de conjuntos, directo del álgebra relacional.
Bis
- sales_report.sqlUn reporte mensual de ventas armado con CTE encadenadas, un paso por etapa.
- funnel_report.sqlContar cuántas sesiones llegaron a cada paso, y luego la caída entre ellos.