下面是我的查询,结果如下:
select t.actual_date,
t.id_key,
t.attendance_status,
t.money_step,
sum(t.money_step) over (partition by t.id_key order by t.actual_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)as accumulated
from example t
order by t.id_key, t.actual_date
查询结果
我希望“累计”列为每个id\u键加上“money\u step”的值。如果id\u键是id的第二次“15”,则计数器应从开始处累加。对于id_key=1,它应该如下所示:
累积的:
Row 1:20
Row 2: 80
Row 3: 100
Row 4: 120
对于id\u key=2,它应该如下所示:
Row 1: accumulated = 30; attendance_status = 7
Row 2: accumulated = 130; attendance_status = 15
Row 3: accumulated = 30; attendance_status = 15
Row 4: accumulated = 60; attendance_status = 15
15级总是有最晚的日期。从第15级的第二个日期起,每个id的总和应重新开始。所有值少于15应视为正常。
如何在查询中执行此操作?有人能帮我吗?
3条答案
按热度按时间c8ib6hqw1#
试试下面的逻辑-
此处演示
bt1cpqcv2#
这是未经测试,因为我没有转录一个图像,然而,我认为这将工作。如果没有,则消耗品样品数据必须在此处显示:
2sbarzqh3#
我强烈建议你只使用窗口函数。其实很简单:
这是一把小提琴。