¿Cómo se reconoce un buen ejercicio corregido SQL?
Un buen ejercicio no requiere sólo escribir la sintaxis. Presenta una pregunta comercial, describe las tablas disponibles y especifica el resultado esperado. Luego, la corrección explica el razonamiento, los controles y las posibles alternativas.
El validador debe comparar el resultado obtenido, no sólo el texto de la consulta. Dos soluciones diferentes pueden ser correctas si devuelven las columnas, filas y cálculos exactos correctos.
- Contexto que explica por qué la respuesta es útil.
- Datos lo suficientemente ricos como para revelar errores lógicos.
- Señales progresivas que ayudan sin entregar la solución inmediatamente.
- Una corrección comentada y control del resultado.
El método de los cinco pasos
Antes de iniciar el editor, escribe en pocas palabras el alcance y la granularidad esperada. Luego construye la consulta por bloques: fuente, filtros, cálculos, agrupación y clasificación. Ejecuta después de cada paso para aislar errores.
Si está atascado, primero pida una pista conceptual. Vea la solución sólo después de un intento real, luego ciérrela y vuelva a escribir la consulta sin mirarla.
- 1. Reformular la cuestión empresarial.
- 2. Identifica las tablas, claves y columnas necesarias.
- 3. Predice la forma del resultado.
- 4. Escribe y ejecuta la consulta por etapas.
- 5. Compara, corrige y luego explica la solución con tus palabras.
Nivel principiante: filtra sin perder el sentido comercial
Pregunta: Muestra los pedidos pagados superiores a 100 €, del más nuevo al más antiguo. La tabla orders contiene order_id, ordered_at, status y amount.
Empieza seleccionando solo las columnas útiles. Luego añade ambas condiciones en WHERE y luego ordena. La corrección siguiente utiliza un operador estricto: un pedido de exactamente 100 € no está incluido.
SELECT order_id, ordered_at, amount
FROM orders
WHERE status = 'paid'
AND amount > 100
ORDER BY ordered_at DESC;Nivel intermedio: agregado después de un join
Pregunta: Encuentre los cinco clientes que generaron la mayor cantidad de ingresos de pedidos pagados. Los nombres están en customers y los montos en orders.
El join vincula los pedidos a su cliente. WHERE excluye los pedidos impagos antes de la agregación. GROUP BY produce una fila por cliente, luego LIMIT se queda con las cinco primeras después de la clasificación.
- También agrupar por customer_id distingue dos personas con el mismo nombre.
- El filtro de estado se aplica antes de SUM.
- Un join en las líneas de comando requeriría una verificación adicional de duplicados.
SELECT
c.customer_id,
c.full_name,
SUM(o.amount) AS revenue
FROM customers AS c
INNER JOIN orders AS o
ON o.customer_id = c.customer_id
WHERE o.status = 'paid'
GROUP BY c.customer_id, c.full_name
ORDER BY revenue DESC
LIMIT 5;Nivel avanzado: clasificar sin quitar detalle
Pregunta: Clasifica cada pedido pagado en su ciudad, de mayor a menor. A diferencia de GROUP BY, una función de ventana mantiene cada comando en el resultado.
DENSE_RANK asigna el mismo rango a cantidades idénticas y no crea un hueco después de un empate. PARTITION BY city inicia nuevamente el ranking para cada ciudad.
SELECT
order_id,
city,
amount,
DENSE_RANK() OVER (
PARTITION BY city
ORDER BY amount DESC
) AS city_rank
FROM orders
WHERE status = 'paid'
ORDER BY city, city_rank, order_id;Cómo utilizar la corrección sin perder el aprendizaje
Una corrección es útil cuando explica por qué existe cada cláusula y cómo controlar el resultado. Se vuelve contraproducente si se copia antes de cualquier intento o si impone una sola forma de consulta.
Después de comprender una solución, modifica una restricción: cambie el umbral, mantén a los clientes sin pedidos o calcula una clasificación diferente. Esta variación verifica que el razonamiento es transferible.
- Pista 1: Identifica el concepto que falta.
- Pista 2: propone la estructura de la cláusula.
- Explicación: relacionar la cláusula con la necesidad del negocio.
- Solución: Mostrar una consulta verificada y sus límites.
Construye una progresión desde principiante hasta avanzado
La dificultad no debería provenir de una afirmación ambigua. Aumenta cuando el ejercicio combina más decisiones: elegir la granularidad adecuada, vincular varias tablas, gestionar valores NULL, comparar períodos o utilizar una función de ventana.
Una progresión coherente regresa periódicamente a nociones anteriores en nuevos contextos. Evita diez ejercicios casi idénticos donde sólo cambia el nombre de la tabla o el valor del filtro.
- Principiante: lectura, filtros, clasificación y cálculos sencillos.
- Intermedio: agregaciones, joins, CASE y subconsultas.
- Avanzado: CTE, funciones de ventana, calidad y optimización de datos.
- Proyecto: transformar una solicitud de negocio en un análisis controlado.
Diagnosticar errores en lugar de empezar de nuevo al azar
Un error de sintaxis impide la ejecución; un error lógico devuelve un resultado falso. Empieza leyendo la línea informada, luego reduzca la consulta al bloque más pequeño que funcione. Para obtener un error de resultado, comprueba la cantidad de registros devueltos en cada join y el alcance de los filtros.
Mantén algunas consultas de control: número de pedidos, suma total, valores de estado distintos y líneas no coincidentes. Le permiten verificar rápidamente un análisis más complejo.
Elige tu próximo ejercicio
El catálogo SQL.tn te permite filtrar ejercicios por nivel y concepto. Si no sabes por dónde empezar, la prueba de nivel te recomienda un punto de partida. Luego, el curso Data Analyst organiza la práctica en torno a indicadores y preguntas comerciales.
