特定の日付以降に合計が300ポイント以上のすべてのプレーヤーをカウントしたいと思います。私はこれを持っています:
SELECT
COUNT(DISTINCT playerID)
FROM
table
WHERE
game_date > '$date'
HAVING
SUM(points) >= 300
これは、合計が300ポイント未満のプレーヤーもカウントしています。どうすればこれを解決できますか?
特定の日付以降に合計が300ポイント以上のすべてのプレーヤーをカウントしたいと思います。私はこれを持っています:
SELECT
COUNT(DISTINCT playerID)
FROM
table
WHERE
game_date > '$date'
HAVING
SUM(points) >= 300
これは、合計が300ポイント未満のプレーヤーもカウントしています。どうすればこれを解決できますか?
アンドレ・ボサードが指摘したように:
ポイント>=300のすべてのプレーヤーのリストを取得するには:
SELECT * FROM (SELECT playerID, SUM(points) points FROM table WHERE game_date>'$date' GROUP BY playerID) a WHERE points>=300
カウントを取得するには:
SELECT COUNT(*) FROM (SELECT playerID, SUM(points) points FROM table WHERE game_date>'$date' GROUP BY playerID) a WHERE points>=300
そのためにサブクエリを使用します。
SELECT COUNT(*) FROM
(
SELECT playerID, SUM(points) AS `total`
FROM `table`
WHERE game_date > '$date'
GROUP BY playerID
) tmp
WHERE total>=300