diff --git a/Lab/not_check/var2.sql b/Lab/Lab#2/var2.sql similarity index 77% rename from Lab/not_check/var2.sql rename to Lab/Lab#2/var2.sql index a1c5a7a..c44d84b 100644 --- a/Lab/not_check/var2.sql +++ b/Lab/Lab#2/var2.sql @@ -3,7 +3,7 @@ /* Задание 1 */ SELECT (first_name || ' ' || last_name) AS "ФИО", - salary AS "ОКЛАД", + to_char(salary, '9999999D99') AS "ОКЛАД", trunc(salary*0.87) AS "Оклад минус подоходный" FROM employees; @@ -12,10 +12,10 @@ SELECT first_name AS "Имя", last_name AS "Фамилия", job_id AS "Должность", - hire_date AS "Дата приема на работу" + to_char(hire_date, 'DD.MM.YYYY') AS "Дата приема на работу" FROM employees WHERE job_id IN ('AD_PRES', 'AD_VP', 'AD_ASST') -AND hire_date BETWEEN SYMMETRIC +OR hire_date BETWEEN '1995-01-01' AND '2023-01-01' LIMIT 5; @@ -23,11 +23,11 @@ LIMIT 5; SELECT first_name AS "Имя", last_name AS "Фамилия", - job_id AS "Должность", + to_char(salary, '99999D99') AS "Оклад", to_char(hire_date, 'DD.MM.YYYY') AS "Дата приема на работу", - - EXTRACT(month from now()) + EXTRACT(year from now())*12 - - EXTRACT(month from hire_date) - EXTRACT(year from hire_date)*12 + + EXTRACT(month from age(now(), hire_date)) + + EXTRACT(year from age(now(), hire_date))*12 as "Проработано месяцев" FROM employees; diff --git a/Lab/Lab#3/BDLab3Corrected(2)(1).pdf b/Lab/Lab#3/BDLab3Corrected(2)(1).pdf new file mode 100644 index 0000000..40f51db Binary files /dev/null and b/Lab/Lab#3/BDLab3Corrected(2)(1).pdf differ diff --git a/Lab/Lab#3/lab3.sql b/Lab/Lab#3/lab3.sql new file mode 100644 index 0000000..fa5107f --- /dev/null +++ b/Lab/Lab#3/lab3.sql @@ -0,0 +1,63 @@ +/* Лабораторная работа №3 | Вариант 4 | Антипенко, Дробышевский */ + +SELECT * FROM departments; +SELECT * FROM employees; +SELECT * FROM jobs; + +/* Задание 1 */ +SELECT + e.first_name AS "FIRST_NAME", + e.last_name AS "LAST_NAME", + d.department_name AS "DEPARTMENT_NAME" +FROM employees e, departments d +WHERE e.department_id = d.department_id AND d.department_name IN ('IT', 'Sales'); + +/* Задание 2 */ +SELECT + e.first_name AS "FIRST_NAME", + e.last_name AS "LAST_NAME", + trunc(e.salary) AS "SALARY", + d.department_name AS "DEPARTMENT_NAME", + j.job_title AS "JOB_TITLE" +FROM employees e, jobs j, departments d +WHERE e.department_id = d.department_id AND e.job_id = j.job_id +AND e.salary > 10000 +ORDER BY e.salary ASC; + +/* Задание 3 */ +SELECT + e.first_name AS "Имя", + e.last_name AS "Фамилия", + to_char(e.salary, '99999D99') AS "Оклад", + trunc(j.min_salary) AS "Мин.оклад" +FROM employees e, jobs j +WHERE e.job_id = j.job_id AND j.min_salary*1.2 >= e.salary; + +/* Задание 4 */ +SELECT + last_name AS "Фамилия_Р", + first_name AS "Имя", + to_char(salary, '99999D99') AS "Оклад" +FROM employees +WHERE salary > ( + SELECT + AVG(salary) + FROM employees +) +ORDER BY salary ASC; + +/* Задание 5 */ +SELECT + e.first_name AS "Имя", + e.last_name AS "Фамилия", + e.job_id AS "Должность", + to_char(e.salary, '999999D99') AS "Оклад" +FROM employees e +/*WHERE e.job_id = j.job_id AND e.salary = j.max_salary*/ +WHERE e.salary, e.job_id IN ( + SELECT + max_salary, + job_id + FROM jobs +); + \ No newline at end of file diff --git a/Lab/Lab#4/BDLab4Corrected(1).pdf b/Lab/Lab#4/BDLab4Corrected(1).pdf new file mode 100644 index 0000000..c7569e5 Binary files /dev/null and b/Lab/Lab#4/BDLab4Corrected(1).pdf differ diff --git a/Lab/Lab#4/lab4.sql b/Lab/Lab#4/lab4.sql new file mode 100644 index 0000000..be083ba --- /dev/null +++ b/Lab/Lab#4/lab4.sql @@ -0,0 +1,37 @@ +CREATE table staff( + id integer primary key, + name varchar(64) NOT NULL, + department varchar(64) NOT NULL +); + +CREATE SEQUENCE staff_id_seq + START WITH 12 + CYCLE + INCREMENT BY 8 + CACHE 100; + + +INSERT INTO staff VALUES + (nextval('staff_id_seq'), 'Ivan Makarenko', 'Director'); + +INSERT INTO staff + (SELECT nextval('staff_id_seq'), last_name, department_name + FROM employees e JOIN departments d ON e.department_id = d.department_id); + +UPDATE staff SET department = 'Innovations department' + WHERE id < 40; + +DELETE FROM staff + WHERE name ILIKE('%K%'); + +WITH RECURSIVE tmp AS ( + SELECT employee_id, first_name, last_name, manager_id, 1 AS level + FROM employees + WHERE manager_id = 100 + UNION ALL + SELECT e.employee_id, e.first_name, e.last_name, e.manager_id, t.level + 1 + FROM employees e + JOIN tmp t ON e.manager_id = t.employee_id +) +SELECT first_name, last_name +FROM tmp; \ No newline at end of file diff --git a/Practice/SR/var1.sql b/Practice/SR/var1.sql new file mode 100644 index 0000000..f67accb --- /dev/null +++ b/Practice/SR/var1.sql @@ -0,0 +1 @@ +SELECT name FROM departments \ No newline at end of file