22nd Dec 2025 Lectura de 12 minutos Mejora tus consultas: 7 trucos intermedios de SQL que todo analista debería conocer Agnieszka Kozubek-Krycuń análisis de datos Índice 1. Utilice CASE WHEN para columnas condicionales 2. Combine CASE WHEN con GROUP BY y SUM 3. Simplifique los resúmenes con ROLLUP 4. Manejar datos faltantes con COALESCE y NULLIF 5. Domina la manipulación de fechas y horas 6. Utilice funciones JSON para datos semiestructurados 7. Organizar consultas con expresiones de tabla comunes (CTE) Siga avanzando en sus superpoderes SQL El dominio de SQL no se limita a escribir consultas sencillas, sino que comienza cuando empiezas a transformar los datos en información útil. Aprende siete trucos SQL intermedios que todo analista debería conocer para analizar de forma más inteligente, trabajar más rápido y descubrir patrones que tus consultas básicas no pueden mostrar. Si ya sabe cómo utilizar SELECT, JOIN y WHERE, es hora de dar un paso más. El SQL no se limita a SELECT: si quiere convertirse en un analista de datos profesional, debe ir más allá de lo básico y empezar a pensar como alguien que convierte los datos en respuestas. El SQL intermedio es donde el análisis se vuelve interesante: cuando deja de extraer datos sin procesar y empieza a generar conocimientos que realmente impulsan las decisiones empresariales. En este artículo, repasaremos siete trucos de SQL de nivel intermedio que ayudarán a cualquier analista de datos a trabajar de forma más inteligente y rápida. Estas técnicas son habilidades prácticas y reales que harán que tus consultas sean más potentes, eficientes y estén preparadas para un análisis avanzado. En LearnSQL.es, nuestro curso de SQL para el análisis de datos te ayuda a pasar de escribir consultas básicas a comprender los datos a un nivel más profundo. A continuación se presentan siete trucos de SQL que todo analista de datos debe dominar para que sus consultas sean más rápidas, limpias y reveladoras. 1. Utilice CASE WHEN para columnas condicionales A menudo, los analistas necesitan crear sus propias categorías, por ejemplo, separar a los clientes VIP de los normales o etiquetar las transacciones como de «alto» o «bajo» valor. Aunque los filtros le muestran los grupos existentes, a veces es necesario definir los propios. Ahí es donde CASE WHEN resulta útil. Se trata de una expresión SQL estándar que funciona como una instrucción IF, lo que le permite crear lógica condicional directamente en sus consultas para segmentar datos o aplicar reglas de negocio de forma dinámica. Ejemplo: SELECT customer_id, total_spent, CASE WHEN total_spent > 1000 THEN 'VIP' WHEN total_spent BETWEEN 500 AND 1000 THEN 'Regular' ELSE 'New' END AS customer_segment FROM customers; Esto es lo que ocurre en esta consulta. Comienza seleccionando el ID de cada cliente y el gasto total de la tabla de clientes. A continuación, la CASE expresión recorre cada fila, comprobando el valor de total_spent en orden. Si un cliente ha gastado más de 1000, SQL le asigna la etiqueta 'VIP'. Si no es así, pasa a la siguiente condición: los clientes que han gastado entre 500 y 1000 reciben la etiqueta 'Regular'. Todos los demás entran en la 'New' categoría definida por la ELSE . La CASE expresión se detiene tan pronto como encuentra la primera condición verdadera, lo que garantiza que cada cliente obtenga exactamente una categoría. El resultado final incluye una nueva columna, customer_segment, que refleja la etiqueta determinada por esas reglas. Este enfoque le permite integrar una lógica empresarial sencilla directamente en su SQL, lo que hace que sus informes o paneles de control sean inmediatamente más reveladores sin necesidad de limpiar datos adicionales ni realizar clasificaciones manuales. Puede obtener más información sobre CASE expresión en nuestro artículo Explicación de SQL CASE WHEN: 10 ejemplos sencillos para principiantes 2. Combine CASE WHEN con GROUP BY y SUM A veces es necesario crear sus propias métricas de resumen, por ejemplo, contar cuántos pedidos de alto valor, valor medio y bajo valor genera cada región. La agrupación estándar solo puede resumir las columnas existentes, pero el análisis empresarial a menudo requiere definiciones personalizadas. Ahí es donde entra en juego la combinación de CASE WHEN con GROUP BY y funciones de agregación como SUM o COUNT resulta muy útil. Permite calcular múltiples estadísticas basadas en condiciones en una sola consulta, lo que supone una forma clara de convertir los datos sin procesar en información empresarial significativa. Ejemplo: SELECT region, SUM(CASE WHEN total_amount > 1000 THEN 1 ELSE 0 END) AS high_value_orders, SUM(CASE WHEN total_amount BETWEEN 500 AND 1000 THEN 1 ELSE 0 END) AS mid_value_orders, SUM(CASE WHEN total_amount < 500 THEN 1 ELSE 0 END) AS low_value_orders FROM orders GROUP BY region; Esta consulta agrupa los pedidos por región y cuenta cuántos entran en diferentes categorías de valor. Para cada pedido, la CASE expresión comprueba el total_amount y devuelve 1 si la condición es verdadera o 0 si no lo es. A continuación, la función SUM suma los valores para obtener los totales de cada categoría dentro de una región. Este patrón es útil para comparar el rendimiento empresarial, por ejemplo, para detectar qué regiones generan más transacciones de alto valor o para realizar un seguimiento de cómo varían los tamaños de los pedidos entre los distintos mercados. En lugar de escribir varias consultas, puede resumir todo en una sola vista utilizando CASE WHEN con GROUP BY. Puede aprender a trabajar con CASE, COUNT, SUMy GROUP BY en nuestro curso de nivel intermedio Cómo crear informes básicos con SQL. 3. Simplifique los resúmenes con ROLLUP Al analizar datos a lo largo del tiempo, como las ventas por mes y año, a menudo se necesitan varios niveles de agregación: totales mensuales, totales anuales y un total general. Por lo general, eso requeriría varias consultas o UNION instrucciones. ROLLUP resuelve este problema de forma elegante. Amplía GROUP BY para incluir automáticamente subtotales y totales generales, lo que lo hace ideal para informes financieros, paneles de control o resúmenes ejecutivos. Ejemplo: SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, SUM(total_amount) AS total_sales FROM orders GROUP BY ROLLUP( EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)) ORDER BY year, month; Resultado: yearmonthtotal_sales 2023185,000 2023290,500 2023NULL175,500 2024192,000 2024295,300 2024NULL187,300 NULLNULL362,800 Aquí, ROLLUP(year, month) indica a SQL que agrupe primero los datos por año y mes, luego añada una fila adicional que resuma cada año y, por último, otra fila que muestre el total general de todos los años. Dondequiera que vea NULL en el resultado, se trata de un subtotal o un total generado automáticamente por ROLLUP. Esto facilita la preparación de resúmenes basados en el tiempo en una sola consulta, por ejemplo: Informes de ventas mensuales y anuales. Visitas al sitio web por día, mes y en general. Seguimiento de gastos por departamento con totales de toda la empresa. En resumen, ROLLUP es una forma rápida y fiable de generar resúmenes jerárquicos directamente en SQL, sin necesidad de fórmulas de hoja de cálculo ni agregaciones manuales. Puede obtener más información sobre ROLLUP y otras GROUP BY extensiones en nuestro curso de nivel intermedio Modificadores de GROUP BY en SQL. 4. Manejar datos faltantes con COALESCE y NULLIF El ejemplo ROLLUP muestra un problema común: las filas de subtotales utilizan NULL para representar niveles de agrupación que faltan, lo que puede dificultar la lectura de los resultados. En términos más generales, NULL los valores de los datos suelen causar confusión: celdas en blanco en los informes, texto que falta en los paneles de control o cálculos incompletos en los agregados. Todo analista de datos debe saber cómo manejar NULLde manera eficaz, ya que los valores que faltan no gestionados pueden llevar a conclusiones erróneas o consultas fallidas. Afortunadamente, SQL proporciona herramientas sencillas para que estos valores sean más significativos y fáciles de manejar: COALESCE y NULLIF. Uso de COALESCE: sustituir NULL por valores legibles COALESCE devuelve el primer valor noNULL de una lista, lo que le permite sustituir la NULL etiqueta por algo más significativo. Ejemplo: SELECT COALESCE(region, 'Total') AS region_label, SUM(total_amount) AS total_sales FROM orders GROUP BY ROLLUP(region); Resultado: regiontotal_sales East85,000 West92,300 Total177,300 Aquí, COALESCE(region, 'Total') reemplaza el NULL de la fila del subtotal con una etiqueta legible. Puede utilizarlo de la misma manera para rellenar los números que faltan (COALESCE(discount, 0)) o valores de texto (COALESCE(name, 'Unknown')). Uso de NULLIF: evitar errores de división por cero NULLIF hace lo contrario: convierte un valor específico en NULL. Su uso más práctico es evitar la división por cero en los cálculos. Ejemplo: SELECT product_id, sales, returns, sales / NULLIF(returns, 0) AS sales_to_returns_ratio FROM product_stats; Si devuelve igual a cero, NULLIF(returns, 0) devuelve NULL, evitando que SQL genere un error de división por cero. Dominando COALESCE y NULLIF, los analistas pueden hacer que sus consultas sean más fiables y legibles, asegurándose de que los datos que faltan nunca interfieran en la precisión de los resultados. 5. Domina la manipulación de fechas y horas Las fechas son fundamentales en casi todos los análisis: seguimiento de los ingresos mensuales, la retención semanal, la pérdida de clientes trimestral o el crecimiento anual. Pero las marcas de tiempo sin procesar rara vez tienen el formato que necesitas. Para obtener información significativa, a menudo hay que extraer partes de una fecha, calcular intervalos de tiempo o ajustar las zonas horarias. Un analista de datos debe saber cómo: ordenar registros cronológicamente, extraer partes específicas de una fecha u hora (año, mes, día, hora, minuto), sumar o restar intervalos de tiempo, formatear fechas para informes, convertir entre zonas horarias y gestionar conversiones entre tipos de fecha y cadena o marca de tiempo. SQL proporciona funciones para todo esto. Ejemplo: SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(order_id) AS orders FROM orders GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date) ORDER BY year, month; Esta consulta agrupa todos los pedidos por año y mes para contar cuántos se realizaron en cada período. EXTRACT Extrae partes de una fecha, en este caso, el año y el mes de order_date. La GROUP BY utiliza esos valores extraídos para agregar datos por período de tiempo, y ORDER BY garantiza que los resultados aparezcan cronológicamente. Una vez que comprenda cómo extraer y manipular partes de la fecha, podrá ampliar fácilmente su análisis: comparar el crecimiento mes a mes, medir los intervalos medios entre pedidos o calcular los periodos de retención. Estas habilidades le permiten convertir las marcas de tiempo en información que refleja los ciclos empresariales reales. (Obtenga nuestra hoja de referencia de SQL para el análisis de datospara ver estas funciones en un solo lugar). 6. Utilice funciones JSON para datos semiestructurados Hoy en día, cada vez más datos empresariales provienen de API REST, servicios web que devuelven información en formato JSON (JavaScript Object Notation). JSON es una forma ligera y semiestructurada de almacenar datos utilizando pares clave-valor, matrices y objetos anidados. Por ejemplo, una API podría devolver esto: {"user_id": 42, "device": "mobile", "location": {"country": "US", "city": "Boston"}} Este tipo de datos es flexible, pero no encaja perfectamente en las tablas SQL estándar. Una sola columna puede contener un objeto JSON completo, lo que hace imposible utilizar operadores SQL tradicionales como = o LIKE para extraer valores. Por eso, las bases de datos modernas incluyen funciones JSON como JSON_EXTRACT() en MySQL o JSON_VALUE() en SQL Server. Estas funciones permiten consultar, filtrar y agregar datos semiestructurados directamente. Ejemplo: SELECT JSON_EXTRACT(user_data, '$.device') AS device_type, COUNT(*) AS users FROM events GROUP BY device_type; Aquí, la columna user_data almacena objetos JSON que describen las sesiones de los usuarios. La función JSON_EXTRACT(user_data, '$.device') recupera el valor de la device clave (como 'mobile' o 'desktop') para cada fila. A continuación, la consulta agrupa los resultados por tipo de dispositivo y cuenta cuántos usuarios pertenecen a cada categoría. La capacidad de trabajar con JSON significa que se pueden analizar datos de sistemas modernos (respuestas de API, registros de aplicaciones o eventos de seguimiento) sin necesidad de remodelarlos primero. Es una habilidad esencial para los analistas que trabajan con datos que no están completamente estructurados, pero que aún así están llenos de información valiosa. 7. Organizar consultas con expresiones de tabla comunes (CTE) A medida que tus habilidades con SQL aumentan, tus consultas se hacen naturalmente más largas: múltiples uniones, filtros y agregaciones, todo en una sola instrucción. Eso es genial para el análisis, pero difícil de leer y mantener. Las expresiones de tabla comunes (CTE) hacen que las consultas complejas sean más claras y fáciles de gestionar. Te permiten definir un conjunto de resultados temporal y con nombre al que puedes hacer referencia dentro de la misma consulta. Piensa en una CTE como una subconsulta reutilizable con un nombre. Las CTE son especialmente útiles cuando: necesita desglosar un análisis de varios pasos en partes lógicas, se utiliza el mismo cálculo más de una vez, o desea depurar y probar secciones de una consulta más grande por separado. Ejemplo: WITH monthly_sales AS ( SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, SUM(amount) AS total_sales FROM orders GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date) ) SELECT year, month, total_sales FROM monthly_sales WHERE total_sales > 50000 ORDER BY year, month; Aquí, la CTE denominada monthly_sales calcula las ventas totales por mes y año. Actúa como una tabla temporal que solo existe mientras dura la consulta. A continuación, la consulta externa filtra este resultado para mostrar solo los meses en los que las ventas superaron las 50 000. Esta estructura mejora la legibilidad y facilita la ampliación de la consulta; por ejemplo, se podría unir monthly_sales con una tabla de objetivos o calcular las tasas de crecimiento sin reescribir la lógica de agregación. Las CTE son una herramienta esencial para los analistas que escriben informes por capas basados en datos o que necesitan mantener el SQL complejo organizado y fácil de mantener. Puede obtener más información sobre las expresiones de tabla comunes en nuestro curso avanzado Consultas recursivas y expresiones de tabla comunes . Siga avanzando en sus superpoderes SQL Cada una de estas técnicas le ayuda a escribir consultas más inteligentes y flexibles, del tipo que ahorran tiempo e impresionan a los equipos. Si está listo para ir más allá de lo básico y desarrollar habilidades analíticas reales, explore SQL para el análisis de datos. Abarca todo, desde la generación de informes de nivel intermedio hasta avanzado, todo ello con prácticas prácticas. ¿Quieres tener acceso completo a todos los cursos que ofrecemos? El paquete Todo, para siempre SQL te da acceso de por vida a todos los cursos LearnSQL.es y tracks actuales y futuros: la mejor relación calidad-precio y un único pago que te compensará durante toda tu carrera. Sigue aprendiendo, sigue consultando y sigue subiendo de nivel. Tags: análisis de datos