0

run_software

runID   Release
1   X
2   X
3   Y
4   Z
5   Y
6   X
7   Y
8   Z
9   X
10  Z

testcase        

testID  runID   Result
T_1          1  PASS
T_2          1  FAIL
T_3          1  PASS
T_4          2  PASS
T_5          2  FAIL
T_6          3  PASS
T_7          4  FAIL
T_8          3  PASS
T_9          3  FAIL
T_10         5  PASS
T_11         5  FAIL
T_12         3  PASS

1) run_software テーブルから、runID で実行されている X ソフトウェアを理解できます。1, 2,6,9

2) runID - 1 を取得し、テストケース テーブルに移動します。ここでは、runID 1 の 7 つの testID があります。これらの 7 つの testID から、結果と runID によるグループを使用して、TC カウントと合格/不合格の割合を測定する必要があります。

AIM: 最終的な目的は、最大テストケース数を考慮して、最新の 3 つのリリースとその runID を PASS パーセンテージで見つけることです。

例えば。runID 1、2、3、4 でそれぞれ 10、12、9、21 のテストケースで「X」リリースを実行した場合、リリース「X」の runID 4 を考慮して「PASS %」を測定する必要があります。

望ましいアウトプット:

considering PASS% is > 60
Release runID   Result  PASS %
X   1   PASS    66.66
Y   3   PASS    75
Z   4   FAIL    0

理解すること

Release 'X' has runID's - 1, 2 , 6, 9 with 3, 2, 0 , 0 TestID's respecively
    Hence, X finalized runID '1' with 66.66 as PASS% (2 PASS & 1 FAIL)
4

1 に答える 1

0

あなたの質問は実際にはあまり明確ではありませんが、次のようになるはずです:

SELECT r.Release, r.runID, (CASE WHEN subq.PassPerc >= 60 THEN 'PASS' ELSE 'FAIL' END) AS Result, subq.PASSPerc 
    FROM run_software AS r 
        INNER JOIN (SELECT p.runID, (100 * p.passed / t.total) AS PASSPerc 
            FROM (SELECT runID, COUNT(*) AS passed FROM testcase WHERE Result = 'PASS' GROUP BY runID) AS p
            INNER JOIN (SELECT runID, COUNT(*) AS total FROM testcase GROUP BY runID) AS t ON t.runID = p.runID 
            GROUP BY p.runID, p.passed, t.total) AS subq
        ON subq.runID = r.runID 
    GROUP BY r.Release, r.runID, subq.PASSPerc
于 2013-07-12T08:20:49.620 に答える