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
- 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);
- 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
- Escribe un disparador para hacer un seguimiento de los cambios en la tabla
Employees
. El disparador debería insertar una nueva fila en la tablaEmployeeAudit
cada vez que se actualice el salario de un empleado. La tablaEmployeeAudit
tiene campos paraemployee_id
,old_salary
,new_salary
ychange_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 ;
- 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
- 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);
- 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
- Escribe un disparador para hacer un seguimiento de los cambios en la tabla
Employees
. El disparador debería insertar una nueva fila en la tablaEmployeeAudit
cada vez que se actualice el salario de un empleado. La tablaEmployeeAudit
tiene campos paraemployee_id
,old_salary
,new_salary
ychange_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 ;
- 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
- 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);
- 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
- Escribe un disparador para hacer un seguimiento de los cambios en la tabla
Employees
. El disparador debería insertar una nueva fila en la tablaEmployeeAudit
cada vez que se actualice el salario de un empleado. La tablaEmployeeAudit
tiene campos paraemployee_id
,old_salary
,new_salary
ychange_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 ;
- 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
- 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);
- 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
- Escribe un disparador para hacer un seguimiento de los cambios en la tabla
Employees
. El disparador debería insertar una nueva fila en la tablaEmployeeAudit
cada vez que se actualice el salario de un empleado. La tablaEmployeeAudit
tiene campos paraemployee_id
,old_salary
,new_salary
ychange_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 ;
- 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.