Как я могу считать только Нулевые значения в Oracle/PLSQL?

Как я могу считать только Нулевые значения в Oracle/PLSQL?

Я хочу считать только нулевые значения. Существует ли функция, которая делает это?

9
задан APC 15 May 2010 в 20:01
поделиться

3 ответа

Я не знаю Oracle конкретно, но ANSI SQL, COUNT(rowName) не учитывает значения NULL, но COUNT(*) учитывает.Таким образом, вы можете написать

SELECT COUNT(*) FROM YourTable WHERE YourColumn IS NULL

, который подсчитывает строки в YourTable, для которых YourColumn имеет значение NULL.

18
ответ дан 4 December 2019 в 06:35
поделиться

Как альтернатива ответу mdma. Если вы не хотите ставить фильтр в where, вы можете

SELECT COUNT(case when xxx IS NULL THEN 1 end) cnt_xxx_null
FROM table
10
ответ дан 4 December 2019 в 06:35
поделиться

В документации Oracle указано, что:

Все агрегатные функции, кроме COUNT (*) и GROUPING игнорируют нули.Вы можете использовать функцию NVL в аргумент агрегатной функции для замените значение на ноль.

В качестве примера, используя схему Скотта:

SQL> select empno, sal, comm
  2  from emp;

     EMPNO        SAL       COMM
---------- ---------- ----------
      7369        800
      7499       1600        300
      7521       1250        500
      7566       2975
      7654       1250       1400
      7698       2850
      7782       2450
      7788       3000
      7839       5000
      7844       1500          0
      7876       1100
      7900        950
      7902       3000
      7934       1300

14 rows selected.

Вы можете видеть, что столбец Comm имеет 4 известных значения (т.е. Not null) и 10 неизвестных значений (т.е. Null)

As count (your_column_name) игнорирует нули, которые вам нужно заменить неизвестными значениями на то, на что вы можете ссылаться. Этого можно добиться с помощью функции NVL .

SQL> select count(nvl(comm, -1)) "number of null values"
  2  from emp
  3  where nvl(comm, -1) = -1;

number of null values
---------------------
                   10

Я использовал значение «-1» в качестве «псевдонима» для моих нулевых значений, потому что я знаю, что «-1» не является существующим значением в столбце comm.

РЕДАКТИРОВАТЬ:

По предложению Роба. Можно удалить предложение where из приведенного выше примера и использовать функцию NVL2 , как показано ниже:

SQL> select count(nvl2(comm,null,-1)) "number of null values"
  2  from emp
  3  /

number of null values
---------------------
                   10
6
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: