我有这张类似于 MySQL - get sum() grouped max() of group 的表
id | person | score | date | g | b | m |
-----------------------------------------------------------
1 | 32 | 444 | 2011-05 | 0 | 1 | o |
2 | 65 | 528 | 2011-05 | 1 | 0 | 1 |
3 | 77 | 455 | 2011-05 | 0 | 0 | 1 |
4 | 32 | 266 | 2011-05 | 1 | 1 | 0 |
5 | 77 | 100 | 2011-05 | 0 | 0 | 1 |
6 | 77 | 457 | 2011-05 | 1 | 0 | 0 |
7 | 77 | 457 | 2011-05 | 1 | 0 | 1 |
8 | 65 | 999 | 2011-05 | 0 | 0 | 1 |
9 | 32 | 222 | 2011-05 | 0 | 1 | 1 |
结果应该是:
person | score | date | g | b | m |
-----------------------------------------------------
32 | 932 | 2012-05 | 1 | 3 | 1 |
66 | 1527 | 2012-05 | 1 | 0 | 2 |
77 | 1469 | 2012-05 | 2 | 0 | 3 |
但是我无法实现我想要的。我试图获取每个人每个月的分数、g、m 和 b 字段的总和。我对子查询非常陌生。
谢谢!
最佳答案
不能只按月分组,因为同一个月份可能出现在一年以上,所以也要按年分组,例如:
SELECT person, YEAR(`date`), MONTH(`date`),
SUM(score), SUM(b), SUM(g), SUM(m)
FROM MyTable
GROUP BY person, YEAR(`date`), MONTH(`date`)
如果您的 date
列实际上不是日期类型,而是 varchar 或类似类型,并且它包含 yyyy-dd
如图所示,那么您可以这样做:
SELECT person, `date`,
SUM(score), SUM(b), SUM(g), SUM(m)
FROM MyTable
GROUP BY person, `date`
关于php - MySQL-获取组的 sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621151/