Запрос использует 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 упорядочивает строки результата, но не элементы внутри агрегата, а порядок вставки и первичный ключ напрямую не влияют на порядок чтения.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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