0

私はここの初心者で、いくつかのテスト結果を保存するテーブルがあります。

列は 2 つの列に単純化できます。

EXECUTION_ID int(6) CASE_ID int(11)
RESULT varchar(10).

そして列 "RESULT" は実際には列挙型であり、値を'PASS' ,* 'FAIL' , 'NORESULT' * に保存します。

ここで、1 つの SQL クエリを使用して、すべての実行の統計を取得したいと考えています。

次のような結果セットの形式:

EXECUTION_ID | PASS_CNT FAIL_CNT  |  NORESULT_CNT

次のように実装する方法は 1 つしか見つかりません。

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

同じことを行うより良い方法はありますか?

ありがとうございました!

4

1 に答える 1

1

それはどうですか?

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
于 2013-01-09T06:59:18.267 に答える