Введение
В этом проекте вы научитесь использовать подзапросы для извлечения соответствующей информации из таблиц сотрудников (emp) и департаментов (dept) в базе данных по персоналу. Вы будете практиковать написание сложных запросов SQL для доступа к и анализу данных из нескольких таблиц.
👀 Предварительный просмотр

🎯 Задачи
В этом проекте вы научитесь:
- Как запустить сервер MySQL и импортировать базу данных по персоналу
- Как использовать подзапрос для поиска сотрудника с самой высокой зарплатой
- Как вычислить долю сотрудников в определенном департаменте по сравнению с всей компанией
- Как извлечь всех сотрудников, работающих в определенном месте, с использованием подзапроса
- Как найти сотрудников, чья зарплата превышает среднюю зарплату в их департаменте
🏆 Достижения
После завершения этого проекта вы сможете:
- Разобраться в концепции и использовании подзапросов в SQL
- писать сложные запросы SQL, которые объединяют данные из нескольких таблиц
- Анализировать и извлекать значимые выводы из базы данных с использованием подзапросов
- Показать свои навыки SQL в практическом, реальном сценарии
Запустить MySQL и импортировать базу данных
В этом шаге вы научитесь как запустить сервер MySQL и импортировать базу данных по персоналу.
- Запустите сервер MySQL с использованием команды
sudoбез пароля:
sudo service mysql start
- Перейдите в MySQL-пrompt:
sudo mysql
- Импортируйте данные из файла
personnel.sqlв базу данных MySQL:
SOURCE /home/labex/project/personnel.sql;
Это создаст базу данных personnel и заполнит ее необходимыми таблицами и данными.
Запросить сотрудника с самой высокой зарплатой
В этом шаге вы научитесь использовать подзапрос для извлечения имени сотрудника с самой высокой зарплатой.
- Создайте новый файл с именем
subquery.sqlв директории/home/labex/project. - В файле
subquery.sqlдобавьте следующий запрос SQL:
-- Запрос для извлечения сотрудника(ов) с самой высокой зарплатой
SELECT ename AS `Name` FROM emp WHERE sal = (SELECT MAX(sal) FROM emp);
Этот запрос сначала находит максимальную зарплату в таблице emp с использованием подзапроса, а затем выбирает ename (имя сотрудника) сотрудника(ов), у которых есть эта максимальная зарплата.
Посчитать долю сотрудников в департаменте 10
В этом шаге вы научитесь использовать подзапрос для вычисления доли сотрудников в департаменте 10 по сравнению с всей компанией.
- В файле
subquery.sqlдобавьте следующий запрос SQL:
-- Запрос для вычисления доли сотрудников в департаменте 10
SELECT d.dname AS Department, COUNT(e.empno) / (SELECT COUNT(empno) FROM emp) AS Proportion
FROM emp e
JOIN dept d ON e.deptno = d.deptno
WHERE d.deptno = 10;
Этот запрос сначала подсчитывает количество сотрудников в департаменте 10 путем объединения таблиц emp и dept. Затем он делит это количество на общее количество сотрудников в таблице emp (с использованием подзапроса) для вычисления доли.
Извлечь сотрудников, работающих в Нью-Йорке
В этом шаге вы научитесь использовать подзапрос для извлечения всех сотрудников, работающих в локации Нью-Йорк.
- В файле
subquery.sqlдобавьте следующий запрос SQL:
-- Запрос для извлечения всех сотрудников, работающих в Нью-Йорке
SELECT e.*
FROM emp e
JOIN dept d ON e.deptno = d.deptno
WHERE d.loc = 'NEW YORK';
Этот запрос объединяет таблицы emp и dept, чтобы извлечь сотрудников, чей департамент находится в Нью-Йорке.
Извлечь сотрудников с зарплатой выше средней по департаменту
В этом шаге вы научитесь использовать подзапрос для извлечения сотрудников, чья зарплата выше средней зарплаты в их соответствующем департаменте.
- В файле
subquery.sqlдобавьте следующий запрос SQL:
-- Запрос для извлечения сотрудников, чья зарплата выше средней зарплаты в их соответствующем департаменте
SELECT e.* FROM emp e
JOIN (SELECT deptno, AVG(sal) AS avg_sal FROM emp GROUP BY deptno) AS avg
ON e.deptno = avg.deptno
WHERE e.sal > avg.avg_sal;
Этот запрос сначала вычисляет среднюю зарплату для каждого департамента с использованием подзапроса. Затем он объединяет этот подзапрос с таблицей emp, чтобы выбрать сотрудников, чья зарплата выше средней зарплаты в их департаменте.
После завершения этих шагов в файле subquery.sql должны быть все необходимые SQL-запросы для выполнения требований проекта.
- Сохраните файл.
- В MySQL-пrompt выполните следующую команду для выполнения скрипта
subquery.sql:
SOURCE /home/labex/project/subquery.sql;
Вы должны увидеть следующий вывод:

Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.
