データのグループに 1 つ以上の失敗があるすべてのインスタンスを数えようとしています。
また、この質問を作成するのが非常に難しいと感じているので、例を示すことで、私が達成しようとしていることを説明するのに役立つことを願っています.
サンプルデータ:
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
結果:
count_fail_all, count_fail_group, result_id
0, 3, 1
4, 0, 2
1, 5, 3
0, 3, 4
3, 4, 5
team_id でグループ化し、結果ごとに失敗した回数をカウントするクエリを作成する必要があります。結果に複数の不合格がある場合、その全体的な結果は不合格です。したがって、上記のクエリの結果の数が 3 (例: 最初の結果) の場合は、1 つとしてカウントする必要があります。fail_all と同じ解決策が fail_group でも機能すると考えられるため、fail_group は今のところ無視できます。
私が望む結果は次のとおりです。
team_id, amount_of_fails, amount_of_fails_per_group
1, 2, 2
2, 1, 2
誰かが必要なクエリの作成を手伝ってくれることを願っていますか? どうやって始めればいいのかさえわかりません。あまりよく聞かれていないことがわかっているので、クエリを調整するためにできることがあれば教えてください。
ありがとう!