通过添加上一年的利润来计算连续几年的利润

时间:2019-06-28 05:31:53

标签: sql oracle11g

图像中提供了样本数据和预期结果:

sample data

我们需要将前一年的利润与下一年的利润相加,并以图像中给出的格式显示数据(图像中还提供了示例数据)。

请使用SQL查询帮助我解决此问题。

3 个答案:

答案 0 :(得分:1)

您也可以使用窗口功能编写该代码。

SELECT
    Year,
    SUM(Profit) OVER(ORDER BY Year) AS Total_Profit
FROM your_table
ORDER BY Year

答案 1 :(得分:0)

这可能是您可以谷歌搜索的世界上最简单的递归CTE。 但是这里是:

declare @years table(y int, p int)
insert @years values (2015,1000),(2016,2000),(2017,500),(2018,1000)
; with cumulative as
(
    select top 1 * from @years order by y
    union all
    select y.y, y.p+c.p
    from @years y
    join cumulative c on y.y=c.y+1
)
select * from cumulative

结果:

y       p
2015    1000
2016    3000
2017    3500
2018    4500

答案 2 :(得分:0)

在分区上使用总和:

WITH V1 AS (
    SELECT 2015 AS YEAR, 1000 AS PROFIT FROM DUAL
    UNION ALL SELECT 2016 AS YEAR, 2000 AS PROFIT FROM DUAL
    UNION ALL SELECT 2017 AS YEAR, 500 AS PROFIT FROM DUAL
    UNION ALL SELECT 2018 AS YEAR, 1000 AS PROFIT FROM DUAL
)
SELECT 
    V1.YEAR
    , PROFIT --- You can comment it if not needed
    , SUM(PROFIT) OVER (PARTITION BY 1 ORDER BY YEAR RANGE UNBOUNDED PRECEDING) AS PROFIT_CUM
FROM V1;