首页 > 解决方案 > SQLite:计算计数器在当前日期和星期内如何增加

问题描述

我有一个 SQLite 数据库,在 unixtime 中有一个计数器和时间戳,如下所示:

+---------+------------+
| counter | timestamp  |
+---------+------------+
|         | 1582933500 |
|    1    |            |
+---------+------------+
|    2    | 1582933800 |
+---------+------------+
|   ...   |     ...    |
+---------+------------+

我想计算“计数器”在当天和本周的增加情况。

在 SQLite 查询中可能吗?

谢谢!

标签: sqlite

解决方案


如果您的 SQLite 版本 >= 3.25.0,SQLite 窗口函数将帮助您实现这一目标。

使用该LAG函数从上一条记录中检索值- 如果没有(第一行就是这种情况) ,则提供默认值,与当前行相同。

出于演示的目的,此代码:

SELECT counter, timestamp,
LAG (timestamp, 1, timestamp) OVER (ORDER BY counter) AS previous_timestamp,
(timestamp - LAG (timestamp, 1, timestamp) OVER (ORDER BY counter)) AS diff
FROM your_table
ORDER BY counter ASC

会给出这个结果:

1   1582933500  1582933500  0
2   1582933800  1582933500  300

推荐阅读