Saltar al contenido

SQL desde cero: ejercicios con datos y soluciones

Practica SELECT, WHERE, ORDER BY, GROUP BY y HAVING con ocho gastos ficticios. Descarga los datos, ejecuta las consultas y comprueba los resultados.

Equipo editorial de Cursalo · Revisado el 27 de septiembre de 2026

¿Qué quieres resolver primero?

Elige una opción para orientar la práctica. Puedes continuar sin elegir.

Las instrucciones y los archivos de esta página están disponibles sin registro.

Practica SELECT, WHERE y GROUP BY con gastos ficticios

Para empezar a consultar datos, crea una tabla pequeña, comprueba sus filas y responde preguntas concretas. En este ejercicio trabajarás con ocho gastos ficticios y compararás tus resultados con una solución. No necesitas compartir datos personales ni conectar una base de datos de trabajo.

Usamos importes enteros expresados en centavos para evitar que el redondeo decimal distraiga del ejercicio. Las consultas básicas funcionan en SQLite y PostgreSQL; la forma de abrir el editor o importar un CSV depende de la herramienta.

Archivos de práctica

El ZIP incluye gastos.csv, practica.sql y las soluciones explicadas. El script solo crea la tabla practica_gastos e inserta datos ficticios; ejecútalo en una base nueva de práctica. Si lo vuelves a ejecutar sobre la misma tabla, la creación fallará: abre otra base de práctica para repetir desde cero.

Descargar datos y consultas SQL (ZIP)

1. Mira los datos antes de filtrarlos

SELECT id, fecha, categoria, concepto, importe_centavos
FROM practica_gastos
ORDER BY id;

La tabla tiene ocho filas. Las categorías son alimentación, transporte y trabajo. Empezar con una consulta completa ayuda a detectar nombres de columnas incorrectos y evita sacar conclusiones sobre un subconjunto sin saberlo.

2. Encuentra los gastos de transporte

SELECT concepto, importe_centavos
FROM practica_gastos
WHERE categoria = 'transporte'
ORDER BY importe_centavos DESC, id;

Resultado esperado: Tren, 2400 centavos; Autobús, 800; Metro, 500. WHERE decide qué filas entran y ORDER BY decide cómo se presentan. El segundo criterio de orden hace que los empates tengan un resultado estable.

3. Calcula el total por categoría

SELECT categoria,
       COUNT(*) AS movimientos,
       SUM(importe_centavos) AS total_centavos
FROM practica_gastos
GROUP BY categoria
ORDER BY total_centavos DESC, categoria;
Resultados esperados para los datos descargables
CategoríaMovimientosTotal en centavos
trabajo28500
alimentacion36800
transporte33700

Las ocho filas suman 19000 centavos. Comprueba que la suma de los grupos coincide con el total de la tabla. Las categorías están escritas sin tildes en los datos para que puedas copiarlas exactamente.

4. Filtra grupos con HAVING

SELECT categoria, SUM(importe_centavos) AS total_centavos
FROM practica_gastos
GROUP BY categoria
HAVING SUM(importe_centavos) > 5000
ORDER BY total_centavos DESC;

Devuelve trabajo (8500) y alimentación (6800). WHERE filtra filas antes de agrupar; HAVING filtra los grupos después del cálculo. HAVING se incluye aquí como ampliación de práctica; consulta la ficha para conocer el alcance exacto del curso.

5. Propón una consulta y compruébala

Encuentra todos los gastos de al menos 2500 centavos y ordénalos de mayor a menor. Antes de ejecutar SQL, intenta predecir qué filas aparecerán.

Ver solución y resultado
SELECT concepto, importe_centavos
FROM practica_gastos
WHERE importe_centavos >= 2500
ORDER BY importe_centavos DESC, id;

Curso: 6000; Supermercado: 3200; Verdulería: 2600; Papelería: 2500. Son cuatro filas y suman 14300 centavos.

Errores comunes y cómo corregirlos

  • No aparece ninguna fila: comprueba el valor exacto de la categoría. transporte y transportes son textos diferentes.
  • La tabla no existe: ejecuta primero la creación y las inserciones del archivo SQL, en la misma base donde haces las consultas.
  • Los totales no coinciden: comprueba que hay ocho filas y que no cambiaste los importes o el filtro.
  • Quieres modificar datos: trabaja en una copia y usa primero un SELECT con el mismo WHERE. Esta práctica inicial se centra en lectura, no en cambios sobre datos de producción.

Preguntas frecuentes

¿Tengo que instalar un servidor?

No para esta práctica si usas una herramienta local compatible con SQLite. También puedes usar una base de pruebas de PostgreSQL que ya tengas preparada. No introduzcas credenciales ni datos reales en servicios que no conozcas.

¿Incluye JOIN?

Este ejercicio utiliza una sola tabla. Para practicar JOIN necesitas al menos dos conjuntos relacionados y preguntas que requieran unirlos. Empieza comprobando los filtros y agregaciones de esta práctica.

¿Puedo adaptar los datos?

Sí. Cambia una fila ficticia, predice cómo afectará a los totales y repite las consultas. Esa comparación te ayuda a comprobar que entiendes el resultado.

Continúa con el programa completo

Esta práctica es pública y gratuita. El curso tiene sus propias condiciones de acceso: consulta el temario y el formato antes de inscribirte.

Ver el curso y sus condiciones

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.