我有这张表:
-------------------------------------------
|id |duration |date |uid |
-------------------------------------------
|1 |20 |1392479414 |1 |
|2 |60 |1392561057 |1 |
|3 |50 |1392598128 |2 |
|... |
|... |
-------------------------------------------
有没有一种简单的方法可以从中获得每周的累积分数,而无需手动计算周的开始/结束日期,并查询每个日期以获取这些日期之间的分数?
所以我得到:
---------------
|sum_duration |
---------------
|2450 |
|12350 |
|400 |
|... |
|... |
---------------
非常感谢。
最佳答案
是的。 GROUP BY
周数。
获取所有结果
SELECT SUM(`duration`) AS sum_duration, DATE_FORMAT(FROM_UNIXTIME(`date`), '%U') as week_no
FROM `foo`
GROUP BY DATE_FORMAT(FROM_UNIXTIME(`date`), '%U')
根据您的数据集,我们会得到;
+--------------+---------+
| sum_duration | week_no |
+--------------+---------+
| 20 | 06 |
| 110 | 07 |
+--------------+---------+
2 rows in set
获取某周
如果您想获得特定的一周,只需将 HAVING week_no = '07'
附加到末尾即可。 (将 07
替换为您的周数。例如;
SELECT
SUM(`duration`) AS sum_duration,
DATE_FORMAT(FROM_UNIXTIME(`date`), '%U') AS week_no
FROM
`foo`
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(`date`), '%U')
HAVING
week_no = '07';
我们会得到如下结果;
+--------------+---------+
| sum_duration | week_no |
+--------------+---------+
| 110 | 07 |
+--------------+---------+
1 row in set
关于mysql - 从表格宽度日期字段获取每周分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193523/