Ejercicios
50 ejercicios disponibles
Principiante
Consulta Básica de Selección
Selecciona todas las columnas de la tabla usuarios, limitando a 5 resultados.
Selección de Columnas Específicas
Selecciona solo el nombre y email de todos los usuarios.
Filtrado con WHERE
Selecciona todos los usuarios que tienen más de 30 años.
Ordenamiento con ORDER BY
Selecciona todos los usuarios ordenados por nombre de forma alfabética.
Uso de Alias (AS)
Selecciona el nombre y email de los usuarios, renombrando las columnas como "nombre_usuario" y "correo" respectivamente.
Manejo de NULL
Selecciona todos los usuarios que NO tienen ciudad registrada (ciudad es NULL).
Ordenamiento Descendente
Selecciona todos los usuarios ordenados por edad de mayor a menor.
Operadores Lógicos (AND/OR)
Selecciona todos los usuarios que tienen más de 25 años Y viven en 'Madrid'.
Operador NOT
Selecciona todos los usuarios que NO están activos (activo = false).
CREATE TABLE - Tabla Básica
Crea una tabla llamada "productos" con columnas: id (SERIAL), nombre (VARCHAR(100)) y precio (DECIMAL(10,2)).
DROP TABLE - Eliminar Tabla
Elimina la tabla "temporal" que ya existe en el esquema.
ALTER TABLE - Agregar Columna
Agrega una columna "email" de tipo VARCHAR(255) a la tabla "clientes" existente.
ALTER TABLE - Eliminar Columna
Elimina la columna "obsoleto" de la tabla "inventario".
Intermedio
Filtrado con Fechas
Selecciona usuarios que se registraron después del '2023-05-10'.
Conteo con COUNT
Cuenta cuántos usuarios hay en total en la tabla usuarios.
Operador LIKE
Encuentra todos los usuarios cuyo email contenga 'gmail'.
Agrupamiento con GROUP BY
Cuenta cuántos usuarios hay por cada ciudad.
DISTINCT - Valores Únicos
Selecciona todas las ciudades únicas (sin repetir) de la tabla usuarios.
Operador IN
Selecciona todos los usuarios que viven en 'Madrid', 'Barcelona' o 'Valencia'.
BETWEEN - Rango de Valores
Selecciona todos los usuarios con edad entre 25 y 35 años (inclusive).
HAVING - Filtrar Agregaciones
Cuenta los usuarios por ciudad y muestra solo las ciudades con más de 1 usuario.
LOWER y UPPER - Transformar Texto
Selecciona el nombre en mayúsculas y el email en minúsculas de todos los usuarios.
ROUND - Redondear Números
Calcula el promedio de los montos de pedidos y redondéalo a 2 decimales.
Promedio con AVG
Calcula la edad promedio de todos los usuarios.
MIN y MAX
Obtén la edad mínima y máxima de los usuarios en una sola consulta.
COALESCE - Valores por Defecto
Selecciona el nombre y ciudad de cada usuario, mostrando 'Sin ciudad' cuando la ciudad sea NULL.
Concatenación de Texto
Crea una columna llamada 'info_usuario' que combine el nombre y email en formato: 'Nombre (email)'.
CREATE TABLE con PRIMARY KEY
Crea una tabla "empleados" con id (INTEGER PRIMARY KEY), nombre (VARCHAR(100) NOT NULL) y departamento (VARCHAR(50)).
ALTER TABLE - Agregar PRIMARY KEY
Agrega una constraint PRIMARY KEY a la columna "codigo" de la tabla "categorias".
ALTER TABLE - Agregar FOREIGN KEY
Agrega una FOREIGN KEY en la columna "categoria_id" de la tabla "articulos" que referencia a "categorias(id)".
CREATE TABLE con NOT NULL
Crea una tabla "ordenes" con id (SERIAL PRIMARY KEY), cliente (VARCHAR(100) NOT NULL), total (DECIMAL(10,2) NOT NULL) y fecha (DATE).
Avanzado
JOIN Básico
Obtén el nombre del usuario y el monto de cada pedido usando un JOIN entre usuarios y pedidos.
Suma con SUM
Calcula el monto total de todos los pedidos.
Total de Pedidos por Usuario
Obtén el nombre de cada usuario junto con el número total de pedidos que ha realizado. Ordena por nombre.
Subconsulta Básica
Encuentra los usuarios que han realizado pedidos con monto mayor al promedio de todos los pedidos.
Múltiples JOINs
Obtén el nombre del usuario, el monto de cada pedido y el nombre del producto. Une las tablas usuarios, pedidos y productos.
LEFT JOIN con NULL
Encuentra todos los usuarios que NO han realizado ningún pedido usando LEFT JOIN.
UNION - Combinar Resultados
Combina en una sola lista los nombres de todos los usuarios y los nombres de todos los productos, en una columna llamada "nombre".
CASE WHEN - Expresiones Condicionales
Selecciona el nombre de cada usuario y una columna 'categoria_edad' que muestre 'Joven' si edad < 30, 'Adulto' si edad entre 30 y 50, y 'Senior' si edad > 50.
Self JOIN - Auto-unión
Encuentra pares de usuarios que viven en la misma ciudad (cada par debe aparecer una sola vez).
NOT IN con Subconsulta
Selecciona todos los usuarios que NO han realizado ningún pedido usando NOT IN.
EXISTS - Verificar Existencia
Selecciona los usuarios que tienen al menos un pedido usando EXISTS.
Subconsulta Correlacionada
Para cada usuario, muestra su nombre y el monto total de sus pedidos usando una subconsulta en el SELECT.
ROW_NUMBER - Funciones de Ventana
Asigna un número de fila a cada usuario ordenado por fecha de registro, mostrando nombre, fecha_registro y el número de fila.
Pedido Máximo por Usuario
Muestra el nombre de cada usuario junto con el monto de su pedido más alto.
ALTER TABLE - Agregar UNIQUE
Agrega una constraint UNIQUE a la columna "email" de la tabla "usuarios_app".
ALTER TABLE - Agregar CHECK
Agrega una constraint CHECK a la tabla "productos_venta" para que el precio sea siempre mayor a 0.
CREATE INDEX - Índice Simple
Crea un índice llamado "idx_ventas_fecha" en la columna "fecha" de la tabla "ventas".
CREATE INDEX - Índice Compuesto
Crea un índice compuesto llamado "idx_logs_usuario_fecha" en las columnas "usuario_id" y "fecha" de la tabla "logs".
ALTER TABLE - Renombrar Columna
Renombra la columna "nombre_completo" a "nombre" en la tabla "contactos".