我有一个表的样子:
| 日期|块日期|安装|
| - -|- -|- -|
| 2022年1月25日|2022年1月10日|三百五十五|
| 2022年1月26日|2022年1月11日|二十个|
| 2022年1月26日|2022年1月12日|七十|
| 2022年1月27日|2022年1月13日|一百五十个|
| 2022年1月27日|2022年1月14日|一百二十|
我想从previous
天复制数据并填充current
天:
| 日期|块日期|安装|
| - -|- -|- -|
| 2022年1月26日|2022年1月11日|二十个|
| 2022年1月26日|2022年1月12日|七十|
| 2022年1月25日|2022年1月10日|三百五十五|
因此我想看看这张表:
| 日期|块日期|安装|
| - -|- -|- -|
| 一个人。|一个人。|一个人。|
| 2022年1月25日|2022年1月10日|三百五十五|
| 2022年1月26日|2022年1月10日|三百五十五|
| 2022年1月26日|2022年1月11日|二十个|
| 2022年1月26日|2022年1月12日|七十|
| 2022年1月27日|2022年1月10日|三百五十五|
| 2022年1月27日|2022年1月11日|二十个|
| 2022年1月27日|2022年1月12日|七十|
| 2022年1月27日|2022年1月13日|一百五十个|
| 2022年1月27日|2022年1月14日|一百二十|
我需要取一些特定的date
,并查看block_date
,然后填写一个月前的值。例如:对于2022-01-27
,它将是从2022-01-14
到2021-12-15
的block_dates(月份间隔,不需要更多)。我需要检查以前的date
(2022-01-26,2022 -01-25,2022-01-24等),以填充它,如果它是空的。我不知道如何处理这个问题,我希望,我描述的不是那么可怕。
可能吗?我可以这样描述:
SELECT installs FROM table
WHERE date = '2022-01-27' and block_date = '2022-01-13'
IF block_date EXIST THEN USE THIS
IF block_date = '2022-01-13' NOT EXIST THEN
SELECT installs WHERE date '2021-01-26' and block_date = '2022-01-13'
AND PUT installs FROM date '2021-01-26' and block_date = '2022-01-13' TO NEW ROW as date '2021-01-27' and block_date = '2022-01-13'
我需要从每个block_date
中检查30天前(从block_date开始的月份间隔)并填充它。
1条答案
按热度按时间63lcw9qa1#
你的解释还不完全清楚。
我希望您的查询接近:
Selection
CTE中设置了1个月的限制。LEAD
窗口函数负责获取date
的前一个值,而generate_series将返回一组最多1个月的数据。尝试一下,看看它是否适合你,如果不适合,请评论它不适合的原因。