これは少し複雑なクエリですが、私はスヌーカーの試合のデータベースを持っており、誰がプレーして最も決定的なフレームを獲得したかに関する統計を生成しようとしています (ゲームを知らなくても、ルールについて心配する必要はありません) )。
テーブル:
ID player1 player2 bestOf player1Score player2Score
1 1 2 9 5 0
2 2 1 9 5 4
3 1 2 9 5 4
4 2 1 9 4 5
私がやろうとしているのは、次のようなものです。
SELECT COUNT(*) AS played, DISTINCT(player1,player2) AS playerID
FROM matches
WHERE (player1Score=BestOf / 2 + 0.5 AND player2Score=BestOf / 2 - 0.5)
GROUP BY playerID
DISTINCT は複数の列をサポートしていないと思われるため、上記のクエリは機能しません。一番上のテーブルから探している結果は次のとおりです。
playerID played won
1 3 2
2 3 1
表の一番上の行は最終フレームではないため表示されません。
次のようなバリエーションを試しました。
SELECT GROUP(player1,player2)
SELECT player1 + player2 AS playerID, select DISTINCT(playerID)
SELECT (player1 + player2) AS playerID GROUP BY playerID
他にもいくつかあります。ヒントをいただければ幸いです。