我有一个包含以下条目的表:
completed_time|| BOOK_CNT
*********************************************
2013-07-23 | 2
2013-07-22 | 1
2013-07-19 | 3
2013-07 16 |5
2013-07-12 |4
2013-07-11 |2
2013-07-02 |9
2013-06-30 |5
现在,我想使用上面的条目进行数据分析。
假设 DAYS_FROM、DAYS_TO 和 PERIOD 是三个变量。
我需要触发以下类型的查询:
"以 PERIOD 为间隔,从 DAYS_FROM 到 DAYS_TO 的总图书。 "
DAYS_FROM是格式为 YYYY-MM-DD 的日期
, DAYS_TO是格式为 YYYY-MM-DD 的日期
PERIOD是 {1W,2W,1M,2M,1Y},其中 W,M,Y 代表 WEEK、MONTH 和 YEAR。
示例:查询 DAYS_FROM=2013-07-23 、 DAYS_TO=2013-07-03 和 PERIOD=1W 应返回:
ith week - total
1 - 3
2- 8
3- 6
4- 14
说明:
1-3 means (The total book from 2013-07-21(sun) to 2013-07-23(tue) is 3 )
2-8 means (The total book from 2013-07-14(sun) to 2013-07-21(sun) is 8 )
3-16 means (The total book from 2013-07-07(sun) to 2013-07-14(sun) is 6 )
4-14 means (The total book from 2013-07-03(wed) to 2013-07-07(sun) is 14 )
请参阅日历图片以获得更好的理解。
如何触发这样的查询?
我试过什么?
SELECT DAY(completed_time), COUNT(total) AS Total
FROM my_tab
WHERE completed_time BETWEEN '2013-07-23' - INTERVAL 1 WEEK AND '2013-07-03'
GROUP BY DAY(completed_time);
上述查询从 2013-07-23 中减去 7 天,因此将 2013-07-16 到 2013-07-23视为第一周, 将 2013-07-09 到 2013-07-16视为第二周,依此类推。