Объединение двух операторов SQL с одной и той же основой, но разным предложением where

#sql #select #count

Вопрос:

Пожалуйста, помогите мне объединить следующие две инструкции SQL:

 SELECT Count(*) AS total_number_of_followups_scheduled
FROM PROMIS_LT; 
 

и :

 SELECT Count(Status) AS number_followups_completed,  
FROM PROMIS_LT
WHERE (Status = "Completed");
 

Это то, что у меня есть, но это не работает :

 SELECT COUNT(*) As total_number_followups_scheduled, 
COUNT(Status) 
FROM (SELECT 
CASE WHEN (Status = 'Completed' THEN 1 ELSE 0 END) As number_followups_completed FROM PROMIS_LT)
PROMIS_LT;
 

Комментарии:

1. Я бы поместил это CASE WHEN в раздел «ВЫБОР».

Ответ №1:

Вы можете переместить case выражение во второй count вызов и использовать тот факт, что count (и многие аналогичные агрегатные функции) пропускает null s:

 SELECT COUNT(*) AS total_number_of_followups_scheduled,
       COUNT(CASE status WHEN 'Completed' THEN 1 END) AS number_followups_completed
FROM   promis_lt