Это уже четвертая часть из 50 вопросов по SQL с примерами кода. Надеюсь, вы пробовали все предыдущие части. Если нет, сделайте это, оставив ссылку здесь
"ЧАСТЬ II"
В этой части мы увидим вопросы SQL и примеры кода для запросов на присоединение и подзапросы. Как и в предыдущей части, даже в этой части мы начнем с создания набора данных, чтобы упростить вам тестирование SQL. Давай начнем !!
Набор данных для тестов. Рассмотрим следующие две таблицы: «сотрудники» и «отделы».
CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department_id INT, salary DECIMAL(10, 2), hire_date DATE ); INSERT INTO employees (employee_id, first_name, last_name, department_id, salary, hire_date) VALUES (101, 'John', 'Doe', 1, 50000.00, '2021-01-15'), (102, 'Jane', 'Smith', 2, 55000.00, '2020-07-10'), (103, 'Michael', 'Johnson', 1, 60000.00, '2022-03-05'), (104, 'Emily', 'Brown', 3, 48000.00, '2023-02-20'), (105, 'William', 'Lee', 2, 52000.00, '2019-11-28'); CREATE TABLE departments ( department_id INT PRIMARY KEY, department_name VARCHAR(50), location VARCHAR(50) ); INSERT INTO departments (department_id, department_name, location) VALUES (1, 'Sales', 'New York'), (2, 'Marketing', 'Los Angeles'), (3, 'Finance', 'Chicago'), (4, 'Human Resources', 'Houston'), (5, 'IT', 'San Francisco');
- Сотрудник с отделом. Напишите запрос SQL, чтобы найти имена сотрудников, а также названия их отделов и местонахождение.
Отвечать:
SELECT e.first_name, e.last_name, d.department_name, d.location FROM employees e JOIN departments d ON e.department_id = d.department_id;
Объяснение: здесь используется INNER JOIN
для объединения таблиц «сотрудники» и «отделы» на основе department_id
. Этот запрос извлекает имя и фамилию каждого сотрудника вместе с соответствующим названием отдела и его местоположением.
2. Сотрудник больше, чем средняя зарплата: как найти сотрудников, которые зарабатывают больше, чем средняя зарплата в их отделе?