2

我有如下表结构。每一行是一个玩过的游戏,每个人每个月可以玩很多次或不玩一次。

编号 | 人 | 分数 | 日期 |
----------------------------------
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 |

我试图为每个人获得每个月的最佳分数总和。上面的 S 结果应该是:

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

我知道如何在一个月或某个范围内获取每个用户的最佳分数

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

现在子查询按人员和 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 回答