Práctico SQL

Ejercicios corregidos SQL: de principiante a avanzado

Un método de entrenamiento y tres ejercicios explicados para progresar sin transformar la corrección en un simple copiar y pegar.

Equipo de SQL.tn15 min
Curso progresivo de ejercicios SQL con editor, índices, validación y resultado final

¿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.

Corrección: pedidos pagados superiores a 100€
SELECT order_id, ordered_at, amount
FROM orders
WHERE status = 'paid'
  AND amount > 100
ORDER BY ordered_at DESC;
Control: ninguna línea debe tener un estado diferente a paid ni un monto menor o igual a 100.

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.
Corrección: cinco mejores clientes por facturación
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.

Corrección: clasificación de pedidos por 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;
Alternativa: ROW_NUMBER siempre proporciona un número único. RANK deja un hueco tras un empate. La elección correcta depende de la regla empresarial.

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.

Continúa con un ejercicio relacionado con esta guía