我有以下表结构:
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执行此操作。
假设每个页面的计数器都是唯一的,并且 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'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句