時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
1、要求,在一個表中,某一字段為重復(fù)字段。需要去除重復(fù)字段。同時將所有字段顯示出來。
SELECT * FROM (select a1,a2,a3,
Row_number() OVER (PARTITION BY a1 ORDER BY a1)? rn
from a
) where RN = 1
我是oralce新手,下面附Row_number() OVER (PARTITION BY a1 ORDER BY a1)作用
Oracle分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法
ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根據(jù)COL1分組,在分組內(nèi)部根據(jù) COL2排序
而這個值就表示每組內(nèi)部排序后的順序編號(組內(nèi)連續(xù)的唯一的)
RANK() 類似,不過RANK 排序的時候跟派名次一樣,可以并列2個第一名之后 是第3名
LAG 表示 分組排序后 ,組內(nèi)后面一條記錄減前面一條記錄的差,第一條可返回 NULL
BTW: EXPERT ONE ON ONE 上講的最詳細,還有很多相關(guān)特性,文檔看起來比較費勁
row_number()和rownum差不多,功能更強一點(可以在各個分組內(nèi)從1開時排序)
rank()是跳躍排序,有兩個第二名時接下來就是第四名(同樣是在各個分組內(nèi))
dense_rank()l是連續(xù)排序,有兩個第二名時仍然跟著第三名。
相比之下row_number是沒有重復(fù)值的
lag(arg1,arg2,arg3):
arg1是從其他行返回的表達式
arg2是希望檢索的當前行分區(qū)的偏移量。是一個正的偏移量,時一個往回檢索以前的行的數(shù)目。
arg3是在arg2表示的數(shù)目超出了分組的范圍時返回的值。
關(guān)鍵詞標簽:ORACLE
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法