CREATE TABLE Staff
(
staff_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
salary INT,
email VARCHAR(50),
birthday VARCHAR(50),
jobtitle_id INT
);
INSERT INTO Staff(name, salary, email, birthday, jobtitle_id)
VALUES
('ΠΠ²Π°Π½ΠΎΠ² Π‘Π΅ΡΠ³Π΅ΠΉ', 100000,'test@test.ru', '18.03.1990', 1),
('ΠΠ΅ΡΡΠΎΠ² ΠΡΡΡ', 60000,'petr@test.ru', '01.12.2000', 7),
('Π‘ΠΈΠ΄ΠΎΡΠΎΠ² ΠΠ°ΡΠΈΠ»ΠΈΠΉ', 80000,'test@test.ru', '04.02.1999', 6),
('ΠΠ°ΠΊΡΠΈΠΌΠΎΠ² ΠΠ²Π°Π½', 70000,'ivan.m@test.ru', '02.10.1997', 4),
('ΠΠΎΠΏΠΎΠ² ΠΠ²Π°Π½', 120000,'popov@test.ru', '25.04.2001', 5);
CREATE TABLE Jobtitles
(
jobtitle_id INT,
name VARCHAR(100)
);
INSERT INTO Jobtitles(jobtitle_id, name)
VALUES
(1, "Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ"),
(2, "Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊ"),
(3, "ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²"),
(4, "Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ"),
(5, "Π ΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π³ΡΡΠΏΠΏΡ"),
(6, "ΠΠ½ΠΆΠ΅Π½Π΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ"),
(7, "Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ");
/*
1) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π΄ΡΠ±Π»ΠΈ
Π² ΠΏΠΎΠ»Π΅ email ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Sfaff.
*/
SELECT *
FROM Staff
WHERE email IN (
SELECT email
FROM Staff
GROUP BY 1
HAVING COUNT(*) > 1
);
/*
2) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ
Π²ΠΎΠ·ΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Staff Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ
Π·Π°ΠΏΡΠΎΡΠ°.
*/
SELECT name,
TIMESTAMPDIFF(YEAR,
(STR_TO_DATE(birthday, '%d.%m.%Y')),
subdate(DATE(DATE_ADD(NOW(), INTERVAL 3 HOUR)), 1))
AS age
from Staff;
/*
ΠΠΎΠ·ΡΠ°ΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΄Π½Ρ ΠΏΠΎΡΠ»Π΅ Π΄Π½Ρ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
Π Π°ΡΡΠ΅Ρ Π΄Π»Ρ Π·ΠΎΠ½Ρ UTC+3.
*/
/*
3) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ
Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡ (Jobtitles.name) ΡΠΎ Π²ΡΠΎΡΡΠΌ ΠΏΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΡΠΎΠ²Π½Π΅ΠΌ
Π·Π°ΡΠΏΠ»Π°ΡΡ.
*/
SELECT J.name, S.salary AS SecondHighestSalary
FROM Jobtitles AS J INNER JOIN Staff AS S ON J.jobtitle_id = S.jobtitle_id
ORDER BY SecondHighestSalary DESC
LIMIT 1 OFFSET 1;
SELECT Jobtitles.name, SELECT MAX(salary) FROM Staff AS SecondHighestSalary
FROM Jobtitles, Staff
WHERE Staff.salary != SecondHighestSalary;