MySQL IF语句的总和

时间:2017-01-09 22:46:03

标签: mysql count sum case

到目前为止,我有这个有效的查询,它将按序列号分组的检查次数相加,然后减去通过检查的那些总和(' P')。如果通过次数等于检查次数,那么这被认为是整体通过,我们分配值1,否则为0.

SELECT IF(SUM(CASE 
             WHEN i.inspect_result IN ('P','F') THEN 1
             ELSE 0
           END) -

        SUM(CASE 
             WHEN i.inspect_result ='P' THEN 1
             ELSE 0
           END)=0,1,0) as Results 

 FROM inspections i WHERE workorder_id=5 GROUP BY serial_no 

这会得到像这样的结果

-------------
Results
-------------
1
0
1
1
0
0
1
1
1
0
etc. 

我想做的是结果。我尝试使用 SELECT SUM(现有查询封装整个查询,但无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询:

SELECT SUM(Results)
FROM (
SELECT IF(SUM(CASE 
             WHEN i.inspect_result IN ('P','F') THEN 1
             ELSE 0
           END) -

        SUM(CASE 
             WHEN i.inspect_result ='P' THEN 1
             ELSE 0
           END)=0,1,0) as Results 

 FROM inspections i WHERE workorder_id=5 GROUP BY serial_no
) a

以下是简单的 SQL Fiddle