Вопрос проверяет знание базовых операторов SQL.
JOIN используется для объединения таблиц, GROUP BY — для группировки данных, HAVING — для фильтрации сгруппированных данных. HAVING применяется после группировки, а WHERE — до неё.
JOIN — объединяет строки из двух таблиц по условию:
SELECT * FROM orders
JOIN customers ON orders.customer_id = customers.idGROUP BY — группирует строки по значению столбца:
SELECT country, COUNT(*) FROM users GROUP BY countryHAVING — фильтрует агрегированные результаты (после GROUP BY):
SELECT country, COUNT(*) AS cnt
FROM users
GROUP BY country
HAVING COUNT(*) > 100Различие между WHERE и HAVING:
WHERE фильтрует строки до группировки.
HAVING фильтрует после группировки (по агрегатам).
Когда использовать:
JOIN — при необходимости объединения данных из разных таблиц.
GROUP BY + HAVING — при подсчёте агрегатов и их фильтрации (например, топ пользователей по заказам).