繁体   English   中英

如何改善这个SQL查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM