關於Oracle的分析函式的疑惑

2021-08-30 03:15:54 字數 2725 閱讀 3069

有資料表如下:

create table students

(id number(15),

area varchar2(10),

stu_type varchar2(2),

score number(20,2)

)資料有:

insert into students (id, area, stu_type, score)

values (1, '111', 'g', 80.00);

insert into students (id, area, stu_type, score)

values (1, '111', 'j', 80.00);

insert into students (id, area, stu_type, score)

values (1, '222', 'g', 89.00);

insert into students (id, area, stu_type, score)

values (1, '222', 'g', 68.00);

insert into students (id, area, stu_type, score)

values (2, '111', 'g', 80.00);

insert into students (id, area, stu_type, score)

values (2, '111', 'j', 70.00);

insert into students (id, area, stu_type, score)

values (2, '222', 'g', 60.00);

insert into students (id, area, stu_type, score)

values (2, '222', 'j', 65.00);

insert into students (id, area, stu_type, score)

values (3, '111', 'g', 75.00);

insert into students (id, area, stu_type, score)

values (3, '111', 'j', 58.00);

insert into students (id, area, stu_type, score)

values (3, '222', 'g', 58.00);

insert into students (id, area, stu_type, score)

values (3, '222', 'j', 90.00);

insert into students (id, area, stu_type, score)

values (4, '111', 'g', 89.00);

insert into students (id, area, stu_type, score)

values (4, '111', 'j', 90.00);

insert into students (id, area, stu_type, score)

values (4, '222', 'g', 90.00);

insert into students (id, area, stu_type, score)

values (4, '222', 'j', 89.00);

下面是這樣的:主要是對first_value()、last_value()的問題

主要是last_value()的問題!!!

select id,score,first_value(score) over(order by id) fv from students;

輸出結果我可以理解:

id score fv

1 68.00 68

1 80.00 68

1 80.00 68

1 89.00 68

2 60.00 68

2 65.00 68

2 70.00 68

2 80.00 68

3 58.00 68

3 58.00 68

3 75.00 68

3 90.00 68

4 89.00 68

4 89.00 68

4 90.00 68

4 90.00 68

取的是排序的第乙個值,

而在執行和他相反的語句,

select id,score,last_value(score) over(order by id) fv from students;

時的結果我有點不理解:

id score fv

1 68.00 89

1 80.00 89

1 80.00 89

1 89.00 89

2 60.00 80

2 65.00 80

2 70.00 80

2 80.00 80

3 58.00 90

3 58.00 90

3 75.00 90

3 90.00 90

4 89.00 90

4 89.00 90

4 90.00 90

4 90.00 90

為直麼他取的值會是分組後每組的最後乙個值呢,這和上面的first_value()的語句有點不太一樣啊,他為什麼會自動分組呢,!!!!!!!

有誰能幫我看看呀!!!!各位大蝦們!!!

oracle 分析函式的使用

1.rownum與rowid rownum 行數 行號.在查詢語句中之使用於 rowid 編碼 編號 唯一識別號.他們都是偽列,可以理解成表中的乙個列只是他們並不是你建立的。同樣是偽列區別是什麼呢?rowid是你錄入資料時有資料庫自動為這條記錄新增的唯一的18位編號是乙個物理編號用於找到這條記錄 順...

oracle分析函式的使用

1.實現組資料的相加,如下列資料,以前的處理方法是在前台進行加總處理。如果用分析函式處理就直接在後台處理了。74pcs 74 4 pcs70 1pcs 69 4 pcs65 4pcs 61100 pcs161 4pcs 157 2 pcs155 2pcs 153 2 pcs151 2pcs 1492...

關於oracle 函式的Deterministic

在建立函式索引的時候,自定義的函式需要加deterministic 確定性函式的效能好處是如果使用相同的輸入呼叫函式兩次,oracle可以記住第乙個呼叫的結果因此避免在第二次執行時再次呼叫。但是該功能直到10g release 2才被真正實施。環境11g 測試1 create or replace ...