Что означает «группа по нулю» в SQL (в частности, Oracle DB)? - PullRequest
1 голос
/ 25 марта 2020

Суть в том, что я вижу значения, которые не группируются. Но при добавлении group by null дубликаты объединяются, и сумма рассчитывается правильно.

Что означает group by null, который решает дублирование?

Кстати, у меня есть проверил, что в результатах нет нулевых значений.

У меня есть запрос, который я не смог изолировать к тестовому запросу :(, но он похож на приведенный ниже.

Пример запроса :

select
    a,
    sum(value) as s
from
    my_table
group by
    a;

Результат:

a | s
-----
x | 3
x | 8

При добавлении group by null:

select
    a,
    sum(value) as s
from
    my_table
group by
    a,
    null;

Res:

a | s
-----
x | 11

Oracle версия, которая является RDS Амазонки (select * from v$version):

BANNER                                           CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production          0
PL/SQL Release 12.1.0.2.0 - Production                            0
CORE    12.1.0.2.0  Production                                0
TNS for Linux: Version 12.1.0.2.0 - Production                        0
NLSRTL Version 12.1.0.2.0 - Production                            0

Я не уверен, если уместно, но фактический запрос является иерархическим: select from (select ...) group by..., и он использует хранимую процедуру для вычисления значений.

...