
Это уже четвертая часть из 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. Сотрудник больше, чем средняя зарплата: как найти сотрудников, которые зарабатывают больше, чем средняя зарплата в их отделе?