分析函数lag基本用法 SQL> with t as( 2 select '张三' A,3 B FROM DUAL UNION ALL 3 select '李四' A,6 B FROM DUAL UNION ALL 4 select '王五' A,12 B FROM DUAL 5 ) 6 SELECT A,B,B-LAG(B,1,B)OVER(ORDER BY B) AS C 7 FROM T;A B C ---- ---------- ---------- 张三 3 0 李四 6 3 王五 12 6SQL>
SQL> with t as(
2 select '张三' A,3 B FROM DUAL UNION ALL
3 select '李四' A,6 B FROM DUAL UNION ALL
4 select '王五' A,12 B FROM DUAL
5 )
6 SELECT A,B,B-LAG(B,1,B)OVER(ORDER BY B) AS C
7 FROM T;A B C
---- ---------- ----------
张三 3 0
李四 6 3
王五 12 6SQL>
name ID 差额
张三 3 0
张三 6 3
张三 12 6
李四 9 9-9=0 而不是9-6 只有name相同的才计算差额
李四 15 15-9=6
李四 19 19-15=4
王五 10 10-10=0
王五 12 12-10=2
SELECT A,B,B-LAG(B,1,B)OVER(partition by A ORDER BY B) AS C
FROM T;