累计增长值等于当前行值减去组内首行值后的差值再累计求和,正确写法是SUM(value - FIRST_VALUE(value) OVER(PARTITION BY group_col ORDER BY time_col)) OVER(PARTITION BY group_col ORDER BY time_col)。
怎么用ROW_NUMBER()SUM() OVER()SUM(value) OVER(PARTITION BY group_col ORDER BY time_col)FIRST_VALUE()SUM() OVER()SELECT
group_col,
time_col,
value,
SUM(value - FIRST_VALUE(value) OVER(PARTITION BY group_col ORDER BY time_col))
OVER(PARTITION BY group_col ORDER BY time_col) AS cum_growth
FROM t;FIRST_VALUE(value) OVER(...)ORDER BYUNBOUNDED PRECEDING TO UNBOUNDED FOLLOWINGOVERPARTITION BYORDER BY time_colFIRST_VALUE()idLAG()value - LAG(value)[100, 120, 110, 130][NULL, 20, -10, 20][NULL, 20, 10, 30][0, 20, 10, 30]LAG()CASE WHEN ROW_NUMBER() = 1 THEN 0 ELSE ... ENDNULLLAG()NULLFIRST_VALUE()IGNORE NULLSLAGSUMORDER BYORDER BYDESCORDER BYFIRST_VALUE()cum_growthORDER BYPARTITION BYFIRST_VALUE()FIRST_VALUE(value) OVER(...)first_value(value) OVER(...)IGNORE NULLSNULLCOALESCE(FIRST_VALUE(...), ...)FIRST_VALUE()MIN(value) OVER(PARTITION BY group_col ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)MINROW_NUMBER()rn = 1