簡體   English   中英

MySQL - 得到總和()分組的最大()組

[英]MySQL - get sum() grouped max() of group

我有如下表結構。 每一行是一個玩過的游戲,每個人每個月可以玩很多次或不玩一次。

id  |  person  |  score  |   date  |
------------------------------------
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 結果應該是:

 person  | 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)

因為我最終每個季度都需要 output,所以現在我每個月都在獲取最好的數據,並且在我添加的 MySQL 之外。

現在我正在閱讀有關分組最大值的信息,但仍在嘗試獲得預期的結果。 任何幫助

子查詢:

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) 分組,因此它將為每個月返回一行。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM