Teradata SQL扩展+累积
我有登机资料,随着时间的推移计算身份证。我已经扩展了数据,但我还需要积累 我有:Teradata SQL扩展+累积,sql,teradata,Sql,Teradata,我有登机资料,随着时间的推移计算身份证。我已经扩展了数据,但我还需要积累 我有: ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED 12/06/2018 13/06/2018 14/06/2018 2 2 15/06/2018 2 17/06/2018
ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED
12/06/2018
13/06/2018
14/06/2018 2 2
15/06/2018 2
17/06/2018 2
18/06/2018 5 5
19/06/2018 5
20/06/2018 5
我需要它的积累,因为更多的ID正在板上,但无法找到正确的功能,将与扩展相结合
ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED_ACCUMULATED
12/06/2018
13/06/2018
14/06/2018 2 2
15/06/2018 2
17/06/2018 2
18/06/2018 5 7
19/06/2018 7
20/06/2018 7
我的剧本
SELECT
a.ONBOARDING_DATES
, b.ONBOARDED
, SUM(ONBOARDED) OVER ( PARTITION BY 1
ORDER BY ONBOARDING_DATE ASC
RESET WHEN ONBOARDED<>0 ) AS ONBOARDED_EXPANDED
FROM
(
SELECT
CAST(CALENDAR_DATE AS DATE) AS ONBOARDING_DATES FROM
SYS_CALENDAR.CALENDAR
WHERE ONBOARDING_DATES BETWEEN ADD_MONTHS(CURRENT_DATE, - 9) AND ADD_MONTHS(CURRENT_DATE, + 9)
) a
LEFT JOIN
(
SELECT DISTINCT
COUNT(ID) AS ONBOARDED
, WAVE_DATE
FROM ENV0.R_ONBOARDING
WHERE WAVE_DATE IS NOT NULL
GROUP BY WAVE_DATE
) b
ON a.ONBOARDING_DATS = b.WAVE_DATE
ORDER BY a.ONBOARDING_DATE
谢谢您的帮助。您似乎只想要一笔累计金额:
select ONBOARDING_DATE, ONBOARDED,
sum(onboarded) over (order by onboarding_date rows between unbounded preceding and current row) as ONBOARDED_EXPANDED
from t;
您似乎只想要一个累积的总和:
select ONBOARDING_DATE, ONBOARDED,
sum(onboarded) over (order by onboarding_date rows between unbounded preceding and current row) as ONBOARDED_EXPANDED
from t;
您的重置时间可以使用LAST_值加上IGNORE NULLS重写,这将导致解释中的一个统计步骤而不是两个。如果您想计算已加载的扩展和已加载的扩展累积,您也可以在一个步骤中组合它们:
SELECT
a.ONBOARDING_DATES
,b.ONBOARDED
,SUM(ONBOARDED)
OVER (ORDER BY ONBOARDING_DATE ASC
ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED
,LAST_VALUE(ONBOARDED IGNORE NULLS)
OVER (ORDER BY ONBOARDING_DATE ASC
ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED_ACCUMULATE
相同的分区,相同的顺序将这两个计算组合成一个步骤。可以使用最后一个值加上忽略空值重写重置时间,这将导致解释中的一个统计步骤而不是两个。如果您想计算已加载的扩展和已加载的扩展累积,您也可以在一个步骤中组合它们:
SELECT
a.ONBOARDING_DATES
,b.ONBOARDED
,SUM(ONBOARDED)
OVER (ORDER BY ONBOARDING_DATE ASC
ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED
,LAST_VALUE(ONBOARDED IGNORE NULLS)
OVER (ORDER BY ONBOARDING_DATE ASC
ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED_ACCUMULATE
相同的分区、相同的顺序将这两个计算合并到一个步骤中。已解决!谢谢,解决了!谢谢