Что вернёт запрос SELECT AVG(salary) FROM employees;?
AОдна строка с одной колонкой: среднее
salary по всей таблице employeesBПо одной строке на каждого сотрудника со значением поля
salary без агрегацииCПо одной строке на каждый отдел со средней зарплатой внутри этого отдела
DОшибка выполнения: агрегат
AVG без GROUP BY в SQL не разрешёнПравильный ответ. Агрегат без
GROUP BY возвращает одну строку по всей выборке.Разбор
Если в запросе используется агрегатная функция, например AVG(salary), и нет GROUP BY, то результатом будет одна строка с агрегированным значением по всем выбранным строкам. В примере это средняя зарплата по всем сотрудникам в таблице employees. Возврат строки на сотрудника требовал бы отказа от агрегата; группировка по отделам — добавления GROUP BY department; ошибки тут не будет, потому что без GROUP BY агрегат корректен.
Проверь себя · 1/3разбор после ответа
Что вернёт запрос
SELECT AVG(salary) FROM employees;?Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»
- Что делает оператор `DISTINCT` в `SELECT`-запросе?
- Что делает оператор `HAVING` в SQL-запросе с группировкой?
- Есть таблица `orders(user_id, amount)`. Какой запрос посчитает сумму всех заказов по каждому пользователю?
- Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице `orders` есть поля `user_id`, `amount`, `status`. Какой запрос корректен и наиболее эффективен?
- В таблице пользователей есть колонка `middle_name`, в которой часто хранится `NULL`. Что вернёт выражение `COUNT(middle_name)`?
- Все вопросы по «Агрегация, GROUP BY и HAVING» →