Select 日期有差距
Select with gap in dates
可以在记录之间使用预定义的天数间隔制作 select离子,例如:
+------+----------------+--------+
| user | date | Data |
+----- +----------------+--------+
| 1 | 2022-01-01 | 1 |
| 1 | 2022-01-02 | 5 |
| 1 | 2022-01-03 | 2 |
| 1 | 2022-01-06 | 3 |
| 1 | 2022-01-07 | 7 |
| 1 | 2022-01-08 | 1 |
| 1 | 2022-01-09 | 2 |
+------+----------------+--------+
GIVE ME ALL RECORDS WITH 2 DAYS INTERVAL FOR EACH DATE
(在银行的记录中可能存在空白,如 2022-01-03
和 2022-01-06
之间发生的那样)
结果:
+------+----------------+--------+
| user | date | Data |
+----- +----------------+--------+
| 1 | 2022-01-01 | 1 |
| 1 | 2022-01-06 | 3 |
| 1 | 2022-01-09 | 2 |
+------+----------------+--------+
但是这个值2天可以改成7天、30等
目前我通过代码手动执行此操作,我获得开始日期,添加 + x 天,执行 select,添加 + x 天,执行其他 select 直到间隔结束,但这非常昂贵,而且这个过程需要几分钟。
有没有办法在单个查询中执行此操作?
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY `date`) rn
FROM tablename
)
SELECT *
FROM cte
WHERE rn MOD 3 = 1
可以在记录之间使用预定义的天数间隔制作 select离子,例如:
+------+----------------+--------+
| user | date | Data |
+----- +----------------+--------+
| 1 | 2022-01-01 | 1 |
| 1 | 2022-01-02 | 5 |
| 1 | 2022-01-03 | 2 |
| 1 | 2022-01-06 | 3 |
| 1 | 2022-01-07 | 7 |
| 1 | 2022-01-08 | 1 |
| 1 | 2022-01-09 | 2 |
+------+----------------+--------+
GIVE ME ALL RECORDS WITH 2 DAYS INTERVAL FOR EACH DATE
(在银行的记录中可能存在空白,如 2022-01-03
和 2022-01-06
之间发生的那样)
结果:
+------+----------------+--------+
| user | date | Data |
+----- +----------------+--------+
| 1 | 2022-01-01 | 1 |
| 1 | 2022-01-06 | 3 |
| 1 | 2022-01-09 | 2 |
+------+----------------+--------+
但是这个值2天可以改成7天、30等
目前我通过代码手动执行此操作,我获得开始日期,添加 + x 天,执行 select,添加 + x 天,执行其他 select 直到间隔结束,但这非常昂贵,而且这个过程需要几分钟。
有没有办法在单个查询中执行此操作?
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY `date`) rn
FROM tablename
)
SELECT *
FROM cte
WHERE rn MOD 3 = 1