Подсчет нулевых и ненулевых значений во всех столбцах таблицы - PullRequest
1 голос
/ 16 мая 2019

У меня есть таблица с двумя столбцами, как показано ниже:

name         marks
  A            15
  B            
  c            20

Как ясно из приведенного выше, столбец name имеет 3 ненулевых значения и 1 нулевое значение, аналогично столбец marks также имеет 2 нулевых значения и 2 ненулевых значения.

Какой запрос, чтобы получить этот результат?

Ответы [ 4 ]

0 голосов
/ 16 мая 2019

Это выберет количество строк, количество строк с нулевым значением и количество строк с ненулевым значением.Повторите выбор для каждого нужного столбца.

 CREATE TABLE #tmp
 (
     i int
 )

 INSERT INTO #tmp values(1)
 INSERT INTO #tmp values(2)
 INSERT INTO #tmp values(3)
 INSERT INTO #tmp values(NULL)

 SELECT COUNT(*) AS Num_Rows
  , COUNT(i) AS Num_Not_Null
  , COUNT(*)-COUNT(i) AS Num_Null 
 FROM #tmp

Num_Rows Num_Not_Null Num_Null


4 3 1

0 голосов
/ 16 мая 2019
SELECT COUNT(name) AS name_count, COUNT(marks) AS marks_count FROM table;
0 голосов
/ 16 мая 2019

count(columnname) учитывает только ненулевые значения.count(*) считает все строки.

select count(name) as names,
       count(*) - count(name) as null_names,
       count(marks) as marks,
       count(*) - count(marks) as null_marks
from tablenam
0 голосов
/ 16 мая 2019

Вы можете сделать это -

SELECT COUNT(name) AS name_not_null_count, 
       SUM(CASE WHEN name IS NULL THEN 1 ELSE 0 END) AS name_null_count
FROM table

Подход к вычислению нулевого счета: пометьте все нулевые записи 1 и возьмите SUM.

...