0

特定の日付以降に合計が300ポイント以上のすべてのプレーヤーをカウントしたいと思います。私はこれを持っています:

SELECT
    COUNT(DISTINCT playerID)
FROM
    table
WHERE
    game_date > '$date'
HAVING
    SUM(points) >= 300

これは、合計が300ポイント未満のプレーヤーもカウントしています。どうすればこれを解決できますか?

4

2 に答える 2

1

アンドレ・ボサードが指摘したように:

ポイント>=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
于 2012-09-09T17:54:04.297 に答える
1

そのためにサブクエリを使用します。

SELECT COUNT(*) FROM
(
  SELECT playerID, SUM(points) AS `total`
  FROM `table`
  WHERE game_date > '$date'
  GROUP BY playerID
) tmp
WHERE total>=300
于 2012-09-09T18:02:58.873 に答える