Было бы полезно пояснить внутреннюю функциональность функции SUM в Oracle при столкновении с нулевыми значениями:
Результат
select sum(null) from dual;
is null
Но когда нулевое значение находится в последовательности значений (например, сумма столбца с нулевым значением), вычисленное значение нулевого значения будет 0
select sum(value) from
(
select case when mod(level , 2) = 0 then null else level end as value from dual
connect by level <= 10
)
is 25
Это будет более интересно при просмотре результата
select (1 + null) from dual
is null
Так как любая операция с нулевым значением приведет к null (кроме оператора is null
).
==========================
Некоторое обновление из-за комментариев:
create table odd_table as select sum(null) as some_name from dual;
Результат:
create table ODD_TABLE
(
some_name NUMBER
)
Почему столбец some_name
имеет тип номер?