Consultas SQL Fundamentales para Gestión de Datos

Enviado por Programa Chuletas y clasificado en Formación y Orientación Laboral

Escrito el en español con un tamaño de 9,26 KB

Este documento presenta una colección de ejercicios prácticos de SQL, diseñados para fortalecer las habilidades en la manipulación y consulta de datos en bases de datos relacionales. Cada ejercicio incluye una descripción clara del problema y su correspondiente solución en SQL, abarcando desde selecciones básicas hasta operaciones más complejas como subconsultas, uniones y modificaciones de datos.

  1. Consulta de Trabajadores por Rango Salarial

    Crear una consulta para visualizar todos los datos de los trabajadores cuyo salario no esté entre 1500 y 2000. Ordenar la salida de datos por fecha de alta en orden descendente.

    SELECT * FROM emple
    WHERE salario NOT BETWEEN 1500 AND 2000
    ORDER BY fecha_alt DESC;
  2. Filtrado de Trabajadores por Apellido y Oficio

    Visualizar los datos de los trabajadores cuyo apellido empiece por 'A' o el oficio contenga una 'T' en cualquier posición. Ordenar la salida de datos por apellido en orden ascendente.

    SELECT * FROM emple
    WHERE apellido LIKE 'A%'
    UNION
    SELECT * FROM emple
    WHERE oficio LIKE '%T%'
    ORDER BY apellido ASC;
  3. Listado Único de Oficios por Departamento

    Crear un listado único de todos los oficios existentes en el departamento 30. Incluir la información completa del departamento 30 en la consulta.

    SELECT DISTINCT e.oficio, d.*
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE e.dept_no = 30;
  4. Trabajadores con Mismo Oficio y Salario

    Listar los datos de los trabajadores que tienen el mismo oficio y salario que el empleado de apellido ARROYO.

    SELECT * FROM emple
    WHERE oficio = (SELECT oficio FROM emple WHERE apellido = 'ARROYO')
    AND salario = (SELECT salario FROM emple WHERE apellido = 'ARROYO');
  5. Empleado Mejor Pagado por Departamento

    Mostrar el apellido, salario y número de departamento del empleado mejor pagado por cada departamento. Ordenar el resultado de forma descendente por salario.

    SELECT apellido, salario, dept_no
    FROM emple
    WHERE (salario, dept_no) IN (SELECT MAX(salario), dept_no FROM emple GROUP BY dept_no)
    ORDER BY salario DESC;
  6. Departamentos con Salario Medio Superior a la Media Global

    Visualizar los departamentos en los que el salario medio es mayor o igual que la media global de todos los salarios.

    SELECT * FROM depart
    WHERE dept_no IN (SELECT dept_no FROM emple GROUP BY dept_no HAVING AVG(salario) >= (SELECT AVG(salario) FROM emple));
  7. Departamento con Mayor Número de Trabajadores

    Mostrar el número y nombre del departamento, y el número de trabajadores del departamento con la mayor cantidad de empleados. Renombrar las columnas de salida.

    SELECT d.dept_no, d.dnombre AS NombreDepartamento, COUNT(e.emp_no) AS NumeroTrabajadores
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    GROUP BY d.dept_no, d.dnombre
    ORDER BY NumeroTrabajadores DESC
    LIMIT 1;
  8. Conteo de Trabajadores por Oficio y Departamento

    Calcular el número de trabajadores por cada oficio y departamento. Renombrar la columna de salida.

    SELECT dept_no, oficio, COUNT(emp_no) AS "Numero de Trabajadores"
    FROM emple
    GROUP BY dept_no, oficio;
  9. Eliminación de Departamentos con Pocos Empleados

    Eliminar los departamentos (de la tabla depart) que tienen menos de cuatro empleados.

    DELETE FROM depart
    WHERE dept_no IN (SELECT dept_no FROM emple GROUP BY dept_no HAVING COUNT(emp_no) < 4);
  10. Creación de Vista 'NUEVA'

    Crear una vista, denominada NUEVA, que contenga el número de empleado, apellido y oficio de la tabla emple, junto con el número de departamento y la localidad de la tabla depart para cada empleado.

    CREATE VIEW NUEVA AS
    SELECT e.emp_no, e.apellido, e.oficio, d.dept_no, d.localidad
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no;
  11. Modificación de Atributos de Trabajadores del Departamento 20

    Modificar en la tabla emple los siguientes atributos para los trabajadores del departamento 20: reducir el salario a la mitad, establecer la comisión a cero y convertir el apellido a minúsculas.

    UPDATE emple
    SET salario = salario / 2, comision = 0, apellido = LOWER(apellido)
    WHERE dept_no = 20;
  12. Creación de Vista 'Dept30'

    Crear una vista Dept30 que contenga el apellido, oficio y salario de los trabajadores de la tabla emple pertenecientes al departamento 30.

    CREATE VIEW Dept30 AS
    SELECT apellido, oficio, salario
    FROM emple
    WHERE dept_no = 30;
  13. Conteo de Vendedores en Departamento 'VENTAS'

    Mostrar el número de empleados con oficio 'VENDEDOR' del departamento 'VENTAS'. Renombrar la columna de salida como 'Nº Empleados Departamento Ventas'.

    SELECT COUNT(e.emp_no) AS "Nº Empleados Departamento Ventas"
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE d.dnombre = 'VENTAS' AND e.oficio = 'VENDEDOR';
  14. Suma de Salarios por Oficio en Departamento 'VENTAS'

    Mostrar la suma de salarios por cada oficio para los empleados del departamento 'VENTAS'.

    SELECT e.oficio, SUM(e.salario) AS SumaSalarios
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE d.dnombre = 'VENTAS'
    GROUP BY e.oficio;
  15. Departamento con Más Vendedores

    Mostrar los datos del departamento que posee la mayor cantidad de empleados con oficio 'VENDEDOR', incluyendo el número de dichos empleados.

    SELECT d.*, COUNT(e.emp_no) AS NumeroVendedores
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE e.oficio = 'VENDEDOR'
    GROUP BY d.dept_no, d.dnombre, d.localidad
    ORDER BY NumeroVendedores DESC
    LIMIT 1;
  16. Departamentos con Múltiples Empleados en el Mismo Oficio

    Encontrar los departamentos que tienen más de dos personas trabajando en el mismo oficio.

    SELECT d.dept_no, d.dnombre, e.oficio, COUNT(e.emp_no) AS NumeroEmpleadosPorOficio
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    GROUP BY d.dept_no, d.dnombre, e.oficio
    HAVING COUNT(e.emp_no) > 2;
  17. Salario Medio por Departamento (Detallado)

    Visualizar el número de departamento y el salario medio para aquellos departamentos donde el salario medio es mayor o igual que la media global de todos los salarios.

    SELECT dept_no, AVG(salario) AS SalarioMedioDepartamento
    FROM emple
    GROUP BY dept_no
    HAVING AVG(salario) >= (SELECT AVG(salario) FROM emple);
  18. Suma de Salarios por Oficio en Departamento 'INVESTIGACIÓN'

    Partiendo de la tabla emple, visualizar por cada oficio de los empleados del departamento 'INVESTIGACIÓN', la suma de salarios.

    SELECT e.oficio, SUM(e.salario) AS SumaSalarios
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE d.dnombre = 'INVESTIGACIÓN'
    GROUP BY e.oficio;
  19. Conteo de Empleados por Departamento con Oficio 'EMPLEADO'

    A partir de la tabla emple, visualizar el número de empleados de cada departamento cuyo oficio sea 'EMPLEADO'.

    SELECT dept_no, COUNT(*) AS "Nº Empleados"
    FROM emple
    WHERE oficio = 'EMPLEADO'
    GROUP BY dept_no;
  20. Filtrado de Empleados por Apellido y Oficio (AND)

    Visualizar los empleados cuyo apellido empiece por 'A' y el oficio contenga una 'E' en cualquier posición. Ordenar la salida de datos por oficio.

    SELECT apellido, oficio
    FROM emple
    WHERE apellido LIKE 'A%' AND oficio LIKE '%E%'
    ORDER BY oficio;
  21. Datos de Vendedores y su Localidad

    Visualizar apellido, oficio y localidad de los departamentos donde trabajan los 'VENDEDORes'. Renombrar la columna 'oficio' con 'Datos de los Vendedores'.

    SELECT e.apellido, e.oficio AS "Datos de los Vendedores", d.localidad
    FROM emple e
    JOIN depart d ON e.dept_no = d.dept_no
    WHERE e.oficio = 'VENDEDOR';
  22. Empleados con Oficio Similar o Salario Superior

    Mostrar los empleados que desempeñan el mismo oficio que SALA o que tengan un salario mayor o igual que FERNÁNDEZ.

    SELECT apellido, oficio, salario
    FROM emple
    WHERE oficio = (SELECT oficio FROM emple WHERE apellido = 'SALA')
    OR salario >= (SELECT salario FROM emple WHERE apellido = 'FERNANDEZ');
  23. Empleados del Departamento de SÁNCHEZ con Mismo Salario

    Mostrar el apellido, oficio y salario de los empleados del departamento de SÁNCHEZ que tengan su mismo salario.

    SELECT apellido, oficio, salario
    FROM emple
    WHERE (dept_no, salario) IN (SELECT dept_no, salario FROM emple WHERE apellido = 'SANCHEZ');

Entradas relacionadas: