Приведи пример SQL-подзапроса.

«Приведи пример SQL-подзапроса.» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Подзапрос — это запрос, вложенный в другой SQL-запрос. Он может использоваться в различных частях основного запроса.

Пример 1: Подзапрос в условии WHERE (с IN) Найти всех сотрудников, которые работают в отделах, расположенных в Лондоне.

SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id IN (
    SELECT department_id
    FROM departments
    WHERE location_id = 'LON' -- Предположим, 'LON' это код Лондона
);

Пример 2: Коррелированный подзапрос в SELECT Для каждого сотрудника вывести его зарплату и среднюю зарплату по его отделу.

SELECT
    employee_id,
    first_name,
    salary,
    (
        SELECT AVG(salary)
        FROM employees e2
        WHERE e2.department_id = e1.department_id
    ) AS avg_department_salary
FROM employees e1;

Пример 3: Подзапрос как производная таблица (в FROM) Найти отделы со средней зарплатой выше средней по компании.

SELECT department_id, avg_sal
FROM (
    SELECT department_id, AVG(salary) AS avg_sal
    FROM employees
    GROUP BY department_id
) AS dept_avg
WHERE avg_sal > (
    SELECT AVG(salary) FROM employees
);

Ключевой момент: Подзапросы в WHERE и SELECT должны возвращать один столбец (или одно скалярное значение). Подзапрос в FROM должен иметь псевдоним (AS dept_avg).