SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
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;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear