2012-04-04 1 views
0

データのグループが1つ以上失敗したすべてのインスタンスを数えようとしています。2つの異なるデータグループを対象としたクエリを作成し、MySQLの最初のセットに依存する結果を生成するにはどうすればよいですか?

私はまた、この質問を作成することが非常に困難であることを知っているので、例を示すことは、私が達成しようとしていることを説明するトリックを行うことを期待しています。

サンプルデータ:

INSERT INTO test.answers (id, result_id, fail_all, fail_group) VALUES 
    (1,1,0,1), (2,1,0,1), (3,1,0,1), (4,1,0,0), 
    (5,2,1,0), (6,2,0,0), (7,2,1,0), (8,2,1,0), (9,2,1,0), 
    (10,3,0,1), (11,3,1,1), (12,3,0,1), (13,3,0,1), (14,3,0,1), 
    (15,4,0,0), (16,4,0,0), (17,4,0,1), (18,4,0,1), (19,4,0,0), (20,4,0,1), 
    (21,5,1,0), (22,5,0,1), (23,5,1,1), (24,5,0,1), (25,5,1,0), (26,5,0,1); 

INSERT INTO test.results (id,team_id) VALUES 
    (1,1), (2,1), (3,1), (4,2), (5,2); 

私は、次のクエリを実行します。

SELECT 
    COUNT(IF(a.fail_all = 1,1,NULL)) AS count_fail_all, 
    COUNT(IF(a.fail_group = 1,1,NULL)) AS count_fail_group, 
    a.result_id 
FROM test.answers AS a 
GROUP BY a.result_id 

結果:私はTEAM_IDすることにより、そのグループのクエリを作成する必要が

count_fail_all, count_fail_group, result_id 
0, 3, 1 
4, 0, 2 
1, 5, 3 
0, 3, 4 
3, 4, 5 

とカウント方法多くの場合、結果ごとに失敗します。結果に複数の失敗がある場合、その全体的な結果は失敗です。上記のクエリの結果の数が3(例:最初の結果)である場合、それは1として数えられるだけです。 fail_groupのための同じ解決法がfail_groupのために働くと私が信じるので、fail_groupは今のところ無視することができます。私は願っています

結果は次のとおりです。

team_id, amount_of_fails, amount_of_fails_per_group 
1, 2, 2 
2, 1, 2 

私は誰かが私は必要なクエリの作成を支援することができるかもしれません願っていますか?私は始める方法がわからない。 よく質問されていないことがわかっているので、質問を調整するために何かできることがあれば教えてください。

ありがとうございます!

答えて

1

出力したい場合。たぶん、このような何か:

SELECT 
    r.team_id, 
    SUM(IF(a.fail_all = 1,1,0)) AS amount_fail_all, 
    SUM(IF(a.fail_group = 1,1,0)) AS amount_fail_group 
FROM answers AS a 
JOIN results AS r on r.id=a.result_id 
GROUP BY r.team_id 

これはあなたにこの出力が得られます:

team_id amount_fail_all amount_fail_group 
1  2    2 
2  1    2 
+0

私が取得するように見える結果が (1、5、8)amount_fail_group、amount_fail_all、 TEAM_IDある、(2 、3,7)。 私の問題は、result_idに1つ以上の失敗がある場合、1つとしてカウントする必要があります。たとえば、回答では、(1,1,1,1)、(2,1,1,1)、(3,1,0,1)の場合、result_id 1の失敗数は1です。これは、結果は一度しか失敗しないからです。チームには多くの結果があり、結果には多くの回答があります。結果は1つだけ失敗することができます。チームは複数の結果を持つことができるため、複数の失敗が発生します。私は、チームが何回失敗したのかを示すことができることを願っています。 ありがとうございます! – richie

関連する問題