oracle 分析函式之 over 用法

2021-06-01 08:51:37 字數 912 閱讀 3878

僅供個人學習提高使用。

oracle 語法之 over (partition by ..)

select * from test

資料:a b c

1 1 1

1 2 2

1 3 3

2 2 5

3 4 6

---將b列值相同的對應的c 列值加總

select a,b,c, sum(c) over (partition by b) c_sum

from test

a b c c_sum

1 1 1 1

1 2 2 7

2 2 5 7

1 3 3 3

3 4 6 6

partition by b : 把b列進行分割(本人覺得分割有點類似於分組group by,但不等於分組)

我們先來分析一下 c_sum 的結果是怎麼出來的.

b 列總共有四個值: 1 2 3 4. 第一行的c_sum值為1, 因為所對應的c列值為1; 第二行的c_sum值為7. 為什麼呢?因為b列中值為2的行總共有兩列,所以 sum(c) 的值為 7 (等於兩個c列的相加 2+5 = 7). b列下面的值3 4原理同第一列的值1.

---如果不需要以某個列的值分割,那就要用 null

eg: 就是將c的列值summary 放在每行後面

select a,b,c, sum(c) over (partition by null) c_sum

from test

a b c c_sum

1 1 1 17

1 2 2 17

1 3 3 17

2 2 5 17

3 4 6 17

因為沒有分割列,所以c_sum的值為所有c列的值的和. 17=1+2+3+5+6.

oracle 分析函式OVER

分析函式用於計算基於組的某種聚合值,它和聚合函式的不同之處是 對於每個組返回多行,而聚合函式對於每個組只返回一行。over over order by.與over partition by.之間的區別 over order by.用在聚合函式 max sun 後面,可返回根據排序結果進行統計到當前行...

Oracle學習 分析函式over

oracle的分析函式over create table test001 empno number 4 ename varchar2 50 sal number 8,4 insert into test001 values 3,james 1000 insert into test001 value...

oracel 分析函式over 函式

表temp b的記錄 執行如下sql語句 剔除表temp a中city name相同的記錄 示例2 分組排序 成績表的所有記錄如下 執行如下sql語句 select student name,class,score,dense rank over partition by class order b...