CREATETABLE TEST(
PARENT_ID INTEGER,
PART_ID INTEGER,
QUALITY INTEGER);INSERTINTO TEST VALUES(1,1,2);INSERTINTO TEST VALUES(1,2,3);INSERTINTO TEST VALUES(1,3,2);INSERTINTO TEST VALUES(1,4,5);INSERTINTO TEST VALUES(2,2,3);INSERTINTO TEST VALUES(2,3,5);INSERTINTO TEST VALUES(2,4,7);
1.累加
SELECT
T.*,SUM(T.QUALITY)OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID) RUNNING_QUALITY
FROM
TEST T;
2.累乘
SELECT
T.*,ROUND(EXP(SUM(LN(T.QUALITY))OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID)),0) RUNNING_PROD
FROM
TEST T;
3.累减
SELECT
T.PARENT_ID,
T.PART_ID,
T.QUALITY,SUM(if(T.RN=1,T.QUALITY,-T.QUALITY))OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID) RUNNING_PROD
FROM(SELECT
T.*,
ROW_NUMBER()OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID) RN
FROM
TEST T) T;
4.累除
SELECT
T.PARENT_ID,
T.PART_ID,
T.QUALITY,
EXP(SUM(if(RN=1,LN(T.QUALITY),-LN(T.QUALITY)))OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID)) RUNNING_PROD
FROM(SELECT
T.*,
ROW_NUMBER()OVER(PARTITIONBY T.PARENT_ID ORDERBY T.PART_ID) RN
FROM
TEST T)T;