[英]How can I improve this SQL query?
我是新手,我有一张桌子来存储一些测试结果。
列可以简化为2列:
EXECUTION_ID int(6) CASE_ID int(11)
RESULT varchar(10).
并且“ RESULT”列实际上是一个枚举,将值保存在“ PASS” ,* “ FAIL” , “ NORESULT” *中。
现在,我想使用一个sql查询来获取所有执行的统计信息。
结果集格式如下:
EXECUTION_ID | PASS_CNT FAIL_CNT | NORESULT_CNT
我只能找到一种实现它的方法,如下所示:
select A.execId,A.a,B.a,C.a from
(select execId,result,count(result) a from STAT_RESULTS group by execId,result having result='PASS') A left join
(select execId,result,count(result) a from STAT_RESULTS group by execId,result having result='FAIL') B on A.execId=B.execId left join
(select execId,result,count(result) a from STAT_RESULTS group by execId,result having result='NORESULT') C on A.execId=C.execId;
结果列表如下:
execId pass fail noresult
55 169 77 null
56 46 9 1
57 120 13 3
58 91 45 null
59 95 44 null
60 179 9 5
有没有更好的方法来做同样的事情?
谢谢!
那呢
select
s.execid EXECUTION_ID
,sum(case when s.result='PASS' then 1 else 0 end) PASS_CNT
,sum(case when s.result='FAIL' then 1 else 0 end) FAIL_CNT
,sum(case when s.result='NORESULT' then 1 else 0 end) NORESULT_CNT
from STAT_RESULTS s
group by s.execid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.