Menu iconMenu icon
Python y SQL Biblia

Capítulo 15: SQL Avanzado

15.4 Ejercicios Prácticos

En esta sección, cubriremos algunos ejercicios que te ayudarán a solidificar tu comprensión de los conceptos avanzados de SQL.

Ejercicio 1: Trabajar con Subconsultas

  1. Escribe una consulta que encuentre los nombres de todos los empleados cuyo salario esté por encima del salario promedio."
SELECT name
FROM Employees
WHERE salary > (SELECT AVG(salary) FROM Employees);
  1. Escribe una consulta para encontrar al cliente con el monto total de compra más alto. Utiliza una subconsulta para calcular primero el monto total de compra para cada cliente.
SELECT customer_id, name
FROM Customers
WHERE total_purchase = (SELECT MAX(total_purchase) FROM Customers);

Ejercicio 2: Creación y Uso de Procedimientos Almacenados

Escribe un procedimiento almacenado para aumentar el salario de un empleado en un cierto porcentaje. El procedimiento debe tomar el id del empleado y el porcentaje como parámetros.

DELIMITER //
CREATE PROCEDURE IncreaseSalary(IN emp_id INT, IN percentage DECIMAL)
BEGIN
    UPDATE Employees
    SET salary = salary + salary * percentage/100
    WHERE employee_id = emp_id;
END//
DELIMITER ;

Luego puedes llamar a este procedimiento con parámetros específicos de esta manera:

CALL IncreaseSalary(101, 10);

Ejercicio 3: Disparadores

  1. Escribe un disparador para hacer un seguimiento de los cambios en la tabla Employees. El disparador debería insertar una nueva fila en la tabla EmployeeAudit cada vez que se actualice el salario de un empleado. La tabla EmployeeAudit tiene campos para employee_idold_salarynew_salary y change_date.
DELIMITER //
CREATE TRIGGER SalaryChange
AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
   INSERT INTO EmployeeAudit(employee_id, old_salary, new_salary, change_date)
   VALUES (OLD.employee_id, OLD.salary, NEW.salary, NOW());
END;//
DELIMITER ;
  1. Verifica que tu disparador funcione actualizando el salario de un empleado y luego seleccionando todas las filas de la tabla EmployeeAudit.

Recuerda que la sintaxis exacta de SQL podría variar ligeramente dependiendo de tu sistema de base de datos.

15.4 Ejercicios Prácticos

En esta sección, cubriremos algunos ejercicios que te ayudarán a solidificar tu comprensión de los conceptos avanzados de SQL.

Ejercicio 1: Trabajar con Subconsultas

  1. Escribe una consulta que encuentre los nombres de todos los empleados cuyo salario esté por encima del salario promedio."
SELECT name
FROM Employees
WHERE salary > (SELECT AVG(salary) FROM Employees);
  1. Escribe una consulta para encontrar al cliente con el monto total de compra más alto. Utiliza una subconsulta para calcular primero el monto total de compra para cada cliente.
SELECT customer_id, name
FROM Customers
WHERE total_purchase = (SELECT MAX(total_purchase) FROM Customers);

Ejercicio 2: Creación y Uso de Procedimientos Almacenados

Escribe un procedimiento almacenado para aumentar el salario de un empleado en un cierto porcentaje. El procedimiento debe tomar el id del empleado y el porcentaje como parámetros.

DELIMITER //
CREATE PROCEDURE IncreaseSalary(IN emp_id INT, IN percentage DECIMAL)
BEGIN
    UPDATE Employees
    SET salary = salary + salary * percentage/100
    WHERE employee_id = emp_id;
END//
DELIMITER ;

Luego puedes llamar a este procedimiento con parámetros específicos de esta manera:

CALL IncreaseSalary(101, 10);

Ejercicio 3: Disparadores

  1. Escribe un disparador para hacer un seguimiento de los cambios en la tabla Employees. El disparador debería insertar una nueva fila en la tabla EmployeeAudit cada vez que se actualice el salario de un empleado. La tabla EmployeeAudit tiene campos para employee_idold_salarynew_salary y change_date.
DELIMITER //
CREATE TRIGGER SalaryChange
AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
   INSERT INTO EmployeeAudit(employee_id, old_salary, new_salary, change_date)
   VALUES (OLD.employee_id, OLD.salary, NEW.salary, NOW());
END;//
DELIMITER ;
  1. Verifica que tu disparador funcione actualizando el salario de un empleado y luego seleccionando todas las filas de la tabla EmployeeAudit.

Recuerda que la sintaxis exacta de SQL podría variar ligeramente dependiendo de tu sistema de base de datos.

15.4 Ejercicios Prácticos

En esta sección, cubriremos algunos ejercicios que te ayudarán a solidificar tu comprensión de los conceptos avanzados de SQL.

Ejercicio 1: Trabajar con Subconsultas

  1. Escribe una consulta que encuentre los nombres de todos los empleados cuyo salario esté por encima del salario promedio."
SELECT name
FROM Employees
WHERE salary > (SELECT AVG(salary) FROM Employees);
  1. Escribe una consulta para encontrar al cliente con el monto total de compra más alto. Utiliza una subconsulta para calcular primero el monto total de compra para cada cliente.
SELECT customer_id, name
FROM Customers
WHERE total_purchase = (SELECT MAX(total_purchase) FROM Customers);

Ejercicio 2: Creación y Uso de Procedimientos Almacenados

Escribe un procedimiento almacenado para aumentar el salario de un empleado en un cierto porcentaje. El procedimiento debe tomar el id del empleado y el porcentaje como parámetros.

DELIMITER //
CREATE PROCEDURE IncreaseSalary(IN emp_id INT, IN percentage DECIMAL)
BEGIN
    UPDATE Employees
    SET salary = salary + salary * percentage/100
    WHERE employee_id = emp_id;
END//
DELIMITER ;

Luego puedes llamar a este procedimiento con parámetros específicos de esta manera:

CALL IncreaseSalary(101, 10);

Ejercicio 3: Disparadores

  1. Escribe un disparador para hacer un seguimiento de los cambios en la tabla Employees. El disparador debería insertar una nueva fila en la tabla EmployeeAudit cada vez que se actualice el salario de un empleado. La tabla EmployeeAudit tiene campos para employee_idold_salarynew_salary y change_date.
DELIMITER //
CREATE TRIGGER SalaryChange
AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
   INSERT INTO EmployeeAudit(employee_id, old_salary, new_salary, change_date)
   VALUES (OLD.employee_id, OLD.salary, NEW.salary, NOW());
END;//
DELIMITER ;
  1. Verifica que tu disparador funcione actualizando el salario de un empleado y luego seleccionando todas las filas de la tabla EmployeeAudit.

Recuerda que la sintaxis exacta de SQL podría variar ligeramente dependiendo de tu sistema de base de datos.

15.4 Ejercicios Prácticos

En esta sección, cubriremos algunos ejercicios que te ayudarán a solidificar tu comprensión de los conceptos avanzados de SQL.

Ejercicio 1: Trabajar con Subconsultas

  1. Escribe una consulta que encuentre los nombres de todos los empleados cuyo salario esté por encima del salario promedio."
SELECT name
FROM Employees
WHERE salary > (SELECT AVG(salary) FROM Employees);
  1. Escribe una consulta para encontrar al cliente con el monto total de compra más alto. Utiliza una subconsulta para calcular primero el monto total de compra para cada cliente.
SELECT customer_id, name
FROM Customers
WHERE total_purchase = (SELECT MAX(total_purchase) FROM Customers);

Ejercicio 2: Creación y Uso de Procedimientos Almacenados

Escribe un procedimiento almacenado para aumentar el salario de un empleado en un cierto porcentaje. El procedimiento debe tomar el id del empleado y el porcentaje como parámetros.

DELIMITER //
CREATE PROCEDURE IncreaseSalary(IN emp_id INT, IN percentage DECIMAL)
BEGIN
    UPDATE Employees
    SET salary = salary + salary * percentage/100
    WHERE employee_id = emp_id;
END//
DELIMITER ;

Luego puedes llamar a este procedimiento con parámetros específicos de esta manera:

CALL IncreaseSalary(101, 10);

Ejercicio 3: Disparadores

  1. Escribe un disparador para hacer un seguimiento de los cambios en la tabla Employees. El disparador debería insertar una nueva fila en la tabla EmployeeAudit cada vez que se actualice el salario de un empleado. La tabla EmployeeAudit tiene campos para employee_idold_salarynew_salary y change_date.
DELIMITER //
CREATE TRIGGER SalaryChange
AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
   INSERT INTO EmployeeAudit(employee_id, old_salary, new_salary, change_date)
   VALUES (OLD.employee_id, OLD.salary, NEW.salary, NOW());
END;//
DELIMITER ;
  1. Verifica que tu disparador funcione actualizando el salario de un empleado y luego seleccionando todas las filas de la tabla EmployeeAudit.

Recuerda que la sintaxis exacta de SQL podría variar ligeramente dependiendo de tu sistema de base de datos.