0

こんにちは、SQL Server でクエリを作成する際に問題が発生しています。

テストケース、実行、実行バグの 3 つのテーブルがあります。

テストケース

id | name
-------------
1  | Login
2  | Logout

処刑

id | testcase_id
-----------------
1  | 1
2  | 2
3  | 1

実行バグ

execution_id | bug_id
----------------------
1            | B-1
3            | B-2

また、定義されているテストケースの数、実行されたテストケースの数、バグのあるテストケースの数、バグのないテストケースの数を知る必要があります。

このような結果が得られるクエリを探していました。

testcases_n | executed | with_bugs | without_bugs | bugs_amount
---------------------------------------------------------------
2           | 2        | 1         | 1            | 2

テーブル構造を考えると、これは可能ですか?

ありがとう!

4

1 に答える 1

0

次のような意味です。

declare @testcases as table ( id int, name varchar(16) )
insert into @testcases ( id, name ) values
  ( 1, 'login' ), ( 2, 'Logout' )

declare @executions as table ( id int, testcase_id int )
insert into @executions ( id, testcase_id ) values
  ( 1, 1 ), ( 2, 2 ), ( 3, 1 )

declare @execution_bugs as table ( execution_id int, bug_id varchar(16) )
insert into @execution_bugs ( execution_id, bug_id ) values
  ( 1, 'B-1' ), ( 3, 'B-2' )

select
  ( select count(42) from @testcases ) as testcases_n,
  ( select count(distinct testcase_id) from @executions ) as executed,
  ( select count(distinct e.testcase_id) from @executions as e inner join @execution_bugs as eb on eb.execution_id = e.id ) as with_bugs,
  ( select count(42) from @testcases ) - ( select count(distinct e.testcase_id) from @executions as e inner join @execution_bugs as eb on eb.execution_id = e.id ) as without_bugs,
  ( select count(42) from @execution_bugs ) as bugs_amount
于 2012-09-08T02:47:29.487 に答える