我试图弄清楚是否可以按照特定日期开始的X天的时间间隔对数据进行分组 . 我知道如何按日,周,月等分组,但我在任意时间间隔内难倒 .
例如......给定一个包含 timestamp
和 session_count
列的SQL表,我想生成一个按特定日期(在本例中为今天)的时间间隔(在本例中为30天)分组的聚合 .
所以,如果今天是 2015-08-31
,我想回顾过去90天,那么我希望得到三个结果,每个结果涵盖一个30天的期限:
+-------------------+---------------+
| start_of_interval | session_count |
+-------------------+---------------+
| 2015-08-01 | 1234567 |
| 2015-07-02 | 2345678 |
| 2015-06-02 | 3456789 |
+-------------------+---------------+
理想情况下,我希望能够指定用作间隔的任意天数,以及可以使用的任意日期 .
编辑:
这是我希望使用的一般方法:
SELECT ROUND(CEILING(UNIX_TIMESTAMP(timestamp) / 2592000) * 2592000) AS thirtydays,
SUM(session_count) AS session_count_sum
FROM my_table
GROUP BY thirtydays
但是我不确定如何在查询的 thirtydays
部分指定我们应该从哪个开始工作 .
1 回答
这会将其聚合为30天的块:
然后返回它与间隔的开始日期: