sql возвращает 0, если оно равно null, с SELECT * COUNT, SQL-запросы - PullRequest
0 голосов
/ 27 октября 2018

Пожалуйста, дайте мне какие-либо советы.

Мне нужно распечатать, включая «0».

Например, я хочу сделать, как показано ниже, которые включают значения «d» и «0»'но мои реальные запросы распечатываются только до третьей строки (с, 3)

des   num   
---------
 a     1   
 b     2     
 c     3     
 d     0

Вот мой код

SELECT des, COUNT(*) AS num 
FROM table 
WHERE color = 'Red' AND day = 17 
GROUP BY des

Я так ценю любые советы

Ответы [ 3 ]

0 голосов
/ 27 октября 2018

Предложение WHERE в вашем операторе SQL ограничивает количество группируемых строк теми, которые имеют color='Red' and day=17.
Среди строк, возвращаемых для группировки, нет ни одной строки с des='d', и именно поэтому вы получаете этот результат.
Приведенный ниже оператор получает все строки, которые получает ваш оператор, плюс те, которые исключены color='Red' and day=17:

SELECT des, COUNT(*) AS num FROM table 
WHERE color='Red' and day=17 GROUP BY des
union
SELECT DISTINCT des, 0 AS num FROM table 
WHERE des NOT IN (SELECT des FROM table WHERE color='Red' and day=17)
0 голосов
/ 27 октября 2018

Просто используйте условное агрегирование:

SELECT des,
       SUM(CASE WHEN color = 'Red' AND day = 17 THEN 1 ELSE 0 END) AS num 
FROM table 
GROUP BY des;

Это, пожалуй, самый простой способ добиться того, чего вы хотите.

0 голосов
/ 27 октября 2018

используйте 'coalesce' ... я уверен, что есть много примеров .. попробуйте это

  select coalesce(des, 0) as num
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...