Запрос использует ARRAY_AGG(product_name) без ORDER BY внутри функции. Что верно о порядке элементов в массиве?

AПорядок элементов внутри массива всегда совпадает с порядком первичного ключа исходной таблицы, независимо от плана выполнения и ORDER BY
BПорядок детерминирован и совпадает с физическим порядком вставки строк, потому что ARRAY_AGG читает данные строго в порядке INSERT
CПорядок задаётся через внешний ORDER BY в SELECT и автоматически применяется внутри ARRAY_AGG без явного указания сортировки
DБез явного ORDER BY внутри ARRAY_AGG(...) порядок элементов в массиве не гарантирован стандартом и может меняться от запуска к запуску
Правильный ответ. Без ORDER BY внутри ARRAY_AGG порядок элементов не определён стандартом и может меняться между запусками.

Разбор

Порядок строк внутри группы без явной сортировки зависит от плана выполнения, параллелизма и физического расположения данных. Стандарт SQL не гарантирует порядок без ORDER BY. Чтобы получить стабильный результат, пишут ARRAY_AGG(product_name ORDER BY product_name) или ARRAY_AGG(product_name ORDER BY created_at). Внешний ORDER BY в SELECT упорядочивает строки результата, но не элементы внутри агрегата, а порядок вставки и первичный ключ напрямую не влияют на порядок чтения.

Проверь себя · 1/3разбор после ответа
Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице orders есть поля user_id, amount, status. Какой запрос корректен и наиболее эффективен?
Тренировать SQL в Telegram

Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»