sum(x) over( partition by y ORDER BY z ) 分析
2014-12-10 15:40
525 查看
之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组,然后在组内排名。
今天突然碰到sum(...) over( partition by ... ORDER BY ... ),居然搞不清除怎么执行的,所以查了些资料,做了下实操。
1. 从最简单的开始
sum(...) over( ),对所有行求和
sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。
view sql
今天突然碰到sum(...) over( partition by ... ORDER BY ... ),居然搞不清除怎么执行的,所以查了些资料,做了下实操。
1. 从最简单的开始
sum(...) over( ),对所有行求和
sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。
with aa as ( SELECT 1 a,1 b, 3 c FROM dual union SELECT 2 a,2 b, 3 c FROM dual union SELECT 3 a,3 b, 3 c FROM dual union SELECT 4 a,4 b, 3 c FROM dual union SELECT 5 a,5 b, 3 c FROM dual union SELECT 6 a,5 b, 3 c FROM dual union SELECT 7 a,2 b, 3 c FROM dual union SELECT 7 a,2 b, 8 c FROM dual union SELECT 9 a,3 b, 3 c FROM dual ) SELECT a,b,c,sum(c) over( partition by b ) partition_sum, sum(c) over( partition by b order by a desc) partition_order_sum FROM aa;
view sql
相关文章推荐
- sum(x) over( partition by y ORDER BY z ) 分析
- sum(x) over( partition by y ORDER BY z ) 分析
- oracle分析函数sum/ration_to_report(column) over (partition by column order by column)
- 分析函数入门sum...over(partition by xxx order by yyy rows between zzz)
- Oracle 分析函数row_number() over (partition by order by ) 的 Mysql的替代方法
- oracle 分析函数:ROW_NUMBER() OVER(PARTITION BY ID ORDER BY VERSION DESC)
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- Oracle之sum / over / partition by / order by联合使用
- SUM OVER PARTITION BY ORDER BY(分组累计计算方法)
- RANK() OVER(PARTITION BY deptno ORDER BY empno)
- row_number() over(partition by a order by b desc) rn 用法
- oracle Rank() over(partition by XX order by XX)
- 项目经验:项目中分组row_number() over(partition by order by )总结
- RANK() OVER(PARTITION BY deptno ORDER BY empno)
- MAX() over(PARTITION BY ..ORDER BY ..)
- oracle中查询最近的一条记录(FIRST_VALUE() OVER(PARTITION BY ORDER BY ))
- ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)的用法
- rank() over(PARTITION by t.a, t.b, t.c, t.d order
- RANK() OVER(PARTITION BY deptno ORDER BY empno)
- OVER(PARTITION BY column_name1 ORDER BY column_name2) 用法 及 ROW_NUMBER\RANK\DENSE_RANK的区别