我具有以下表格结构:
page_id view_count date
1 30 2018-08-30
1 33 2018-08-31
1 1 2018-09-01
1 5 2018-09-02
...
观看次数在每月的1号重置,并且它的当前值每天存储一次,因此在8月31日,观看次数增加了3(因为33-30)。
我需要做的是通过SQL查询检索两个日期之间的视图计数(差异)。要检索同一月中两个日期之间的观看次数很简单,只需将较大的日期与较低的日期相减即可,但是我不确定在不同月份中的两个日期之间进行检索是如何实现的。如果我想在 2018-08-13 和 2018-09-13 之间检索数据,我将不得不在 2018-08-31 之间取得区别>和 2018-08-13 ,并将其添加到 2018-09-13 的值中。
此外,我想一次在同一日期之间对所有 page_id 执行此操作,如果可能的话。
答案 0 :(得分:0)
假设计数器在每个页面上都是唯一的,并且每天将page_id计数器插入表中,我认为这样的解决方案会起作用
日期基于示例, 并应替换为相关参数
SELECT
v1.view_count + eom.view_count - v2.view_count
FROM
view_counts v1
INNER JOIN view_counts v2 ON v2.page_id = v1.page_id AND v2.`date` = '2018-08-13'
INNER JOIN view_counts eom ON v2.page_id = v.page_id AND eom.`date` = LAST_DAY(DATE_ADD(v.`date`, INTERVAL -1 MONTH))
WHERE
`date` = '2018-09-13'