2

以下のようなテーブル構造になっています。各行は1回のプレイゲームであり、各人は毎月何度もプレイすることも、まったくプレイしないこともできます。

id | 人| スコア| 日付|
------------------------------------
1 | 32 | 444 | 2011-05 |
2 | 65 | 528 | 2011-05 |
3 | 77 | 455 | 2011-05 |
4 | 32 | 266 | 2011-06 |
5 | 77 | 100 | 2011-06 |
6 | 77 | 457 | 2011-06 |
7 | 77 | 457 | 2011-06 |
8 | 65 | 999 | 2011-07 |
9 | 32 | 222 | 2011-07 |

私は、各人の毎月の最高スコアの合計を取得しようとしています。上記の結果は次のようになります。

人| SUM(ofbestofeachmonth)
---------------------------------
  32 | 932
  65 | 1527
  77 | 912

1か月または一部の範囲でユーザーごとに最高のスコアを取得する方法を知っています

SELECT person、date、MAX(score)FROM tabgames WHERE MONTH(date)= 6 GROUP BY person HAVING(score> 0)

年の四半期ごとの最終出力が必要なため、今では毎月、追加しているMySQLの外部で最適なフェッチを行っています。

今、私はグループごとの最大値について読んでいて、それでも期待される結果を得ようとしています。ヘルプ

4

2 に答える 2

8

サブクエリ:

SELECT person, SUM(best)
FROM
    (SELECT person, MAX(score) as best
    FROM tabgames
    WHERE MONTH(`date`) >= 1 AND MONTH(`date`) <= 6 
    GROUP BY person, MONTH(`date`)) as bests
GROUP BY person

これで、サブクエリはpersonとMONTH(date)によってグループ化されるため、各月の行が返されます。

于 2011-07-01T21:52:42.810 に答える
0
Select t.person,Max(t.Score) from 
(
Select person,Sum(Score) as Score,Month('Date') as [Month]  From tabgames
WHERE MONTH(`date`) >= 1 AND MONTH(`date`) <= 6 
GROUP BY PERSON,Month

) AS t
于 2011-07-03T16:28:28.227 に答える