Запрос: SELECT dept, STRING_AGG(name, ', ') FROM employees GROUP BY dept. Что вернёт STRING_AGG для каждого отдела?
AМассив объектов с именами сотрудников в формате PostgreSQL-массива
BСтроку с именами сотрудников отдела, объединёнными через запятую
CЧисло уникальных сотрудников в каждом отделе в текстовом формате
DСлучайное имя одного сотрудника из каждого отдела в виде строки
Правильный ответ.
STRING_AGG(expr, delimiter) конкатенирует все значения группы в одну строку, разделяя их указанным разделителем.Разбор
STRING_AGG(col, sep) — агрегатная функция, которая склеивает строковые значения группы через разделитель sep. Порядок можно задать через STRING_AGG(col, sep ORDER BY sort_col). Аналог в других СУБД: GROUP_CONCAT в MySQL, LISTAGG в Oracle. ARRAY_AGG делает то же самое, но возвращает PostgreSQL-массив, а не текстовую строку.
Проверь себя · 1/3разбор после ответа
Есть таблица
payments(amount), в части строк amount равно NULL. Какой запрос посчитает количество всех строк в таблице, включая строки с NULL в столбце amount?Ещё вопросы по теме «Агрегация, 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» →