【发布时间】:2023-01-25 00:59:03
【问题描述】:
我有下表的前三个字段。我想计算金额高于 0 的连续天数(“天“ 场地)。
| key | date | amount | days |
|---|---|---|---|
| 1 | 2023-01-23 | 0 | 0 |
| 1 | 2023-01-22 | 10 | 2 |
| 1 | 2023-01-21 | 20 | 1 |
| 1 | 2023-01-20 | 0 | 0 |
| 1 | 2023-01-19 | 0 | 0 |
| 1 | 2023-01-18 | 0 | 0 |
| 1 | 2023-01-17 | 3 | 1 |
| 1 | 2023-01-16 | 0 | 0 |
我尝试过使用this link 的一些 Windows 函数。如果以前的金额为 0,则不添加并重置为 1。
我的代码:
case when f.amount > 0
then SUM ( DATE_PART('day',
date::text::timestamp - previou_bus_date::text::timestamp )
) OVER (partition by f.key
ORDER BY f.date
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW )
else 0
end as days
【问题讨论】:
-
我不明白你的问题。你到底想做什么?
-
谢谢你的回复 !我有 3 列键、日期和金额。我想生成具有上述例外值的第 4 列天数
标签: sql postgresql window-functions gaps-and-islands