Объединить 2, если условия в SQL SELECT инструкции - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть суммирование на основе условия if, такого как следующий код, мне нужно добавить еще одно условие перед запуском в SUM (), например:

process_status > 0 and publish is true \\to return 1

`

Код :

SELECT 
       sum(if(process_status > 0, 1, 0)) resource_completed,
       sum(if(process_status = 2, 1, 0)) resource_passed,
       sum(if(process_status = 3, 1, 0)) resource_failed

Как правильно комбинировать несколько, если выбраны условия?

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

Намного проще понять, используя SUM (CASE ... (на мой взгляд)

select 
 sum(case when process_status > 0 and publish is true then 1 else 0 end) 
1 голос
/ 14 апреля 2020

Для MySql Булевы выражения оцениваются как 1 для TRUE и 0 для FALSE, поэтому вы можете написать условие как:

sum(process_status > 0 and publish)

, и вы можете упростить существующий код:

SELECT 
       sum(process_status > 0) resource_completed,
       sum(process_status = 2) resource_passed,
       sum(process_status = 3) resource_failed
1 голос
/ 14 апреля 2020

Вы можете использовать больше условий, как показано ниже -

SELECT stats.reference_id AS resource_id,
count(*) resource_started,
sum(if(process_status > 0 AND publish is true, 1, 0)) resource_completed
...