|
| 1 | +-- 1. Employees with Salary Above 35000 |
| 2 | + |
| 3 | +DELIMITER $$ |
| 4 | +CREATE PROCEDURE usp_get_employees_salary_above_35000 () |
| 5 | +BEGIN |
| 6 | + SELECT e.first_name,e.last_name |
| 7 | + FROM employees AS e |
| 8 | + WHERE salary > 35000 |
| 9 | + ORDER BY e.first_name,e.last_name,e.employee_id; |
| 10 | +END $$ |
| 11 | + |
| 12 | +CALL usp_get_employees_salary_above_35000(); |
| 13 | + |
| 14 | +-- 2. Employees with Salary Above Number |
| 15 | + |
| 16 | +DELIMITER $$ |
| 17 | +CREATE PROCEDURE usp_get_employees_salary_above(min_salary DOUBLE) |
| 18 | +BEGIN |
| 19 | + SELECT e.first_name,e.last_name |
| 20 | + FROM employees AS e |
| 21 | + WHERE e.salary >= min_salary |
| 22 | + ORDER BY e.first_name,e.last_name,e.employee_id; |
| 23 | +END $$ |
| 24 | + |
| 25 | +CALL usp_get_employees_salary_above(48100); |
| 26 | + |
| 27 | +-- 3. Town Names Starting With |
| 28 | + |
| 29 | +DELIMITER $$ |
| 30 | +CREATE PROCEDURE usp_get_towns_starting_with(str_start VARCHAR(10)) |
| 31 | +BEGIN |
| 32 | + SELECT name AS town_name |
| 33 | + FROM towns |
| 34 | + WHERE name LIKE CONCAT(str_start,'%') |
| 35 | + ORDER BY town_name; |
| 36 | +END $$ |
| 37 | + |
| 38 | +CALL usp_get_towns_starting_with('b'); |
| 39 | + |
| 40 | +-- 4. Employees from Town |
| 41 | + |
| 42 | +DELIMITER $$ |
| 43 | +CREATE PROCEDURE usp_get_employees_from_town (town_names VARCHAR(45)) |
| 44 | +BEGIN |
| 45 | + SELECT e.first_name,e.last_name |
| 46 | + FROM employees AS e |
| 47 | + JOIN addresses AS a ON a.address_id=e.address_id |
| 48 | + JOIN towns AS t ON t.town_id = a.town_id |
| 49 | + WHERE t.name = town_names |
| 50 | + ORDER BY e.first_name,e.last_name,e.employee_id; |
| 51 | +END $$ |
| 52 | + |
| 53 | +CALL usp_get_employees_from_town('Sofia'); |
| 54 | + |
| 55 | +-- 5. Salary Level Function |
| 56 | + |
| 57 | +DELIMITER $$ |
| 58 | +CREATE FUNCTION ufn_get_salary_level(input_salary DOUBLE) |
| 59 | +RETURNS VARCHAR(10) |
| 60 | +DETERMINISTIC |
| 61 | +BEGIN |
| 62 | + DECLARE result VARCHAR(10); |
| 63 | + RETURN CASE |
| 64 | + WHEN input_salary < 30000 THEN 'low' |
| 65 | + WHEN input_salary >= 30000 AND input_salary <= 50000 THEN 'average' |
| 66 | + WHEN input_salary > 50000 THEN 'high' |
| 67 | + END; |
| 68 | +END$$ |
| 69 | + |
| 70 | +SELECT ufn_get_salary_level(13500.00); |
| 71 | + |
| 72 | +-- 6. Employees by Salary Level |
| 73 | +DELIMITER $$ |
| 74 | +CREATE PROCEDURE usp_get_employees_by_salary_level(salary_level VARCHAR(10)) |
| 75 | +BEGIN |
| 76 | + SELECT first_name,last_name FROM employees |
| 77 | + WHERE |
| 78 | + CASE |
| 79 | + WHEN salary < 30000 THEN 'Low' |
| 80 | + WHEN salary >= 30000 AND salary <= 50000 THEN 'Average' |
| 81 | + WHEN salary > 50000 THEN 'High' |
| 82 | + END = salary_level |
| 83 | + ORDER BY first_name,last_name DESC; |
| 84 | +END$$ |
| 85 | + |
| 86 | +CALL usp_get_employees_by_salary_level('high'); |
| 87 | + |
| 88 | +-- 7. Define Function |
| 89 | + |
| 90 | +DELIMITER $$ |
| 91 | +CREATE FUNCTION ufn_is_word_comprised(set_of_letters VARCHAR(50),word varchar(50)) |
| 92 | +RETURNS BIT |
| 93 | +DETERMINISTIC |
| 94 | +BEGIN |
| 95 | +RETURN IF(LOWER(word) REGEXP CONCAT('^[', LOWER(set_of_letters), ']+$'), TRUE, FALSE); |
| 96 | +END $$ |
| 97 | + |
| 98 | +SELECT ufn_is_word_comprised('oistmiahf','Sofia'); |
0 commit comments