在mysql中获取两个日期之间的值差

xghobddn  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(342)

我有以下表格结构:

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的值中。
另外,我想一次对所有页面id执行此操作,如果可能的话,可以在同一个查询中的同一日期之间执行。

nkkqxpd9

nkkqxpd91#

假设计数器每页都是唯一的,并且pageid计数器每天都插入到表中,我认为这样的解决方案是可行的
日期基于示例,应替换为相关参数

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'

相关问题