历史平均值的SQL代码

2020-09-03 08:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在HANA中有一个场景,我正在尝试编写一个存储过程。 但是,无论我尝试了什么,它都不起作用。 请帮我。 下面是场景。

我需要计算每年的平均值,逻辑是:2012年平均值的Ex应该为(2012年IPF + 2011年IPF + 2010年IPF)/3。 每年都一样。

2010年无历史记录,应为2010 IPF/3。

(19.3 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在HANA中有一个场景,我正在尝试编写一个存储过程。 但是,无论我尝试了什么,它都不起作用。 请帮我。 下面是场景。

我需要计算每年的平均值,逻辑是:2012年平均值的Ex应该为(2012年IPF + 2011年IPF + 2010年IPF)/3。 每年都一样。

2010年无历史记录,应为2010 IPF/3。

(19.3 kB)
付费偷看设置
发送
4条回答
spaceman01
1楼 · 2020-09-03 09:10.采纳回答

嗨Rambabu。 在您最初的询问中,您没有提到平均应在3年后计算。 如果以这种方式计算平均值,则可以使用以下查询:

 SELECT
   CURRENT_Y。*,
   (CURRENT_Y。" IPF" + SUM(IFNULL(PREVIOUS_Y.IPF,0)))/3 AS" AVG_3_YEARS"
 从
   <您的表> CURRENT_Y
   LEFT JOIN <您的表> PREVIOUS_Y ON CURRENT_Y。" STAFF_ID" = PREVIOUS_Y。" STAFF_ID"
    和TO_INT(CURRENT_Y。" YEAR")-2和TO_INT(CURRENT_Y。" YEAR")-1
 通过...分组
   CURRENT_Y.STAFF_ID,
   CURRENT_Y.YEAR,
   CURRENT_Y.IPF
 ;
 

输出如下:

lukcy2020
2楼-- · 2020-09-03 09:12

下次, 您能否包括您尝试使用SQL的内容。 人们会帮助您的。

您每年要为每个员工寻找东西吗? 您能否阐明为什么将2010年除以3?

并举例说明您期望得到的结果将非常有帮助。

四川大学会员
3楼-- · 2020-09-03 09:13

不确定什么 2010年没有历史记录应该是2010 IPF/3 ,但是 基本上,对于运行平均值计算,您可以使用以下内容:

 SELECT
   *,
   AVG(TO_DECIMAL(" IPF",4,2))超过(按" STAFF_ID"顺序排列(按" YEAR"顺序排列))为" AVG_IPF"
 从
    
骆驼绵羊
4楼-- · 2020-09-03 08:59

您好,Konrad Zateski,

如果我理解正确,那么您提供给我的代码将为我提供一个运行平均值。 但这不是我想要的。 我需要计算回溯年份的平均值。 "不确定 2010年没有什么历史,应该是2010 IPF/3 意味着":假设EMP" 1"已于2010年加入公司,所以他只能从2010年起拥有IPF,并且是前几年。 其0。

EMP 1年的2010年历史平均水平应为:(2010年IPF + 2009年IPF + 2008年IPF)/3。 由于EMP 1在2009、2008年没有IPF,因此最终计算应为(0.5 + 0 + 0)/3。

EMP 1年的2011年历史平均水平应为:(2011年IPF + 2010年IPF + 2009年IPF)/3。 由于EMP 1没有2009年的IPF,因此最终计算应为(0.6 + 0.5 + 0)/3。

EMP 1年的2012年历史平均值应为:(2012年IPF + 2011年IPF + 2010年IPF)/3。 Noe EMP 1拥有IPF的所有年份,因此最终计算应为(0.9 + 0.6 + 0.5)/3。

这件事在接下来的几年里都会消失。

一周热门 更多>