如何解决累积计算 - 基于样本数据
嗨,我提供以下示例数据:根据示例数据,我希望按照屏幕截图输出结果..
create table mytable
(
emp_name varchar2(50),dept_number number,Salary number,Calendar_Year number,Calendar_Period number
);
insert into mytable values ('Bob',6620,6500,2020,1);
insert into mytable values ('Bob',1500,1);
insert into mytable values ('Rachel',3400,1);
insert into mytable values ('Nancy',1400,4500,2);
insert into mytable values ('Nancy',2300,3);
insert into mytable values ('Bob',6640,1200,1000,1100,3);
解决方法
嗯。 . .您似乎想展开行,然后在没有可用的情况下取最近的薪水:
select emp_name,dept_number,calendar_year,calendar_period,coalesce(sum(t.salary),lag(sum(t.salary) ignore nulls) over (partition by emp_name order by calendar_year,calendar_period)
) as salary
from (select distinct emp_name,dept_number from mytable) ed cross join
(select distinct calendar_year,calendar_period from mytable) yp left join
mytable t
using (emp_name,calendar_period)
group by emp_name,calendar_period
order by calendar_year,emp_name
Here 是一个 dbfiddle。
,似乎戈登提供的内容是正确的,除非您想通过 emp_name 和 dept_number 计算 lag()
select emp_name,lag(sum(t.salary) ignore nulls) over (partition by emp_name,dept_number order by calendar_year,calendar_period
order by dept_number,Calendar_Period,emp_name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。