Привет! Я рад поделиться своим опытом написания SQL скриптов для работы с таблицами ″Отделы″ и ″Сотрудники″.Сначала давайте создадим таблицу ″Отделы″ с полями ″название″. Для этого я использовал следующий SQL скрипт⁚
sql
CREATE TABLE Отделы (
id INT PRIMARY KEY‚
название VARCHAR(255) NOT NULL
);
Теперь‚ давайте создадим таблицу ″Сотрудники″ с полями ″фамилия″‚ ″имя″‚ ″отчество″‚ ″зарплата″ и ″руководитель″. В поле ″руководитель″ я буду использовать внешний ключ‚ который будет ссылаться на поле ″id″ в таблице ″Сотрудники″. Вот какой SQL скрипт я использовал⁚
sql
CREATE TABLE Сотрудники (
id INT PRIMARY KEY‚
фамилия VARCHAR(255) NOT NULL‚
имя VARCHAR(255) NOT NULL‚
отчество VARCHAR(255)‚
зарплата DECIMAL(10‚ 2) NOT NULL‚
руководитель INT‚
FOREIGN KEY (руководитель) REFERENCES Сотрудники (id)
);
Теперь‚ для вывода всех сотрудников с указанием их принадлежности к отделу и имени руководителя для каждого‚ мы можем использовать следующий SQL скрипт⁚
sql
SELECT s.фамилия‚ s.имя‚ o.название‚ CONCAT(m.фамилия‚ ‘ ‘‚ m.имя) AS ‘руководитель’
FROM Сотрудники s
LEFT JOIN Отделы o ON s.id o.id
LEFT JOIN Сотрудники m ON s.руководитель m.id;
Этот скрипт использует операторы JOIN‚ чтобы объединить таблицы ″Сотрудники″ и ″Отделы″. LEFT JOIN используется‚ чтобы показывать всех сотрудников‚ даже если у них нет руководителя.Для вывода всех отделов с указанием количества сотрудников в каждом отделе мы можем использовать следующий SQL скрипт⁚
sql
SELECT o.название‚ COUNT(s.id) AS ‘количество сотрудников’
FROM Отделы o
LEFT JOIN Сотрудники s ON o.id s.id
GROUP BY o.id‚ o.название;
Этот скрипт также использует оператор LEFT JOIN для объединения таблиц‚ а затем функцию COUNT для подсчета количества сотрудников в каждом отделе.Наконец‚ для вывода всех сотрудников с зарплатой выше средней по отделу‚ с указанием их зарплаты и средней зарплаты по отделу‚ мы можем использовать следующий SQL скрипт⁚
sql
SELECT s.фамилия‚ s.имя‚ s.зарплата‚ AVG(s.зарплата) AS ‘средняя зарплата’
FROM Сотрудники s
INNER JOIN (
SELECT id‚ AVG(зарплата) AS ‘средняя зарплата’
FROM Сотрудники
GROUP BY id
) a ON s.зарплата > a.средняя зарплата
GROUP BY s.фамилия‚ s.имя;
В этом скрипте‚ мы используем вложенный запрос для вычисления средней зарплаты по отделам‚ а затем объединяем его с таблицей ″Сотрудники″ с помощью оператора INNER JOIN. Затем мы фильтруем только тех сотрудников‚ у которых зарплата выше средней по отделу‚ и группируем результаты по фамилии и имени сотрудника.Вот и все! Я надеюсь‚ что эти SQL скрипты помогут вам выполнять нужные вам задачи с таблицами ″Отделы″ и ″Сотрудники″. 901