我刚开始在我的工作中检查SQL服务器,而我却无法解决这个问题。
假设我有这张表:
Model Serial Pass Failure
Y72742 LURC1 0 Ref 5
Y72742 LURC2 0 Ref 10
Y72596 JDID1 1 EMT
Y72596 JDID2 1 EMT
Y72742 LURC3 0 Ref 10
Y72596 JDID3 0 Ref 5
Y72596 JDID4 0 Ref 18
Y72596 JDID5 1 EMT
Y72596 JDID6 0 Ref 18
Y72596 JDID7 0 Ref 5
Y72596 LURC4 1 UMT
Y72596 LURC5 1 UMT
因此在PASS列中,1表示单位通过,0表示失败。失败列表明失败的原因。
我正在努力完成这样的事情:
Model Pass Failed Percentage
Y72742 2 3 40%
Y72596 1 4 20%
但由于是同一列,我无法完成它。
我尝试使用带有“AND”运算符的子查询,但是我遇到了错误。如果有人能帮助我,我将非常感激。
问候。
答案 0 :(得分:3)
您可以使用SUM
和GROUP BY
:
SELECT
Model
, SUM(case when Pass=1 then 1.0 else 0.0 end) AS Pass
, SUM(case when Pass=1 then 0.0 else 1.0 end) AS Failed
, 100*SUM(case when Pass=1 then 1.0 else 0.0 end)/COUNT(*) AS Percentage
FROM MyTable
GROUP BY Model
答案 1 :(得分:0)
MySQL实施:
SELECT
t.Model,
SUM(IF(t.Pass=1,1,0)) as Passed,
SUM(IF(t.Pass=0,1,0)) as Failed,
SUM(IF(t.Pass=1,1,0))/COUNT(t.Pass) as Percentage
FROM MyTable t
GROUP BY t.Model