Oracle 中的開窗函式
Oracle 中的開窗函式
over 函式
SQL中有經常跟over()開窗函式搭配的是row_number(),一般用於去重或者根據某些欄位分組(partition by)然後再進行排序(order by )得到最終的資料。
rank () over() 和 dence_rank() over()
根據業務需求,一般就會用到排名函式rank,或者dence_rank
這兩個函式跟row_number()的區別為:
row_number () over() 形成的形如1,2,3,4…. 這樣的連續不重複的序列
rank 函式形成的是可不連續可重複(order by 的欄位)的序列,rank()over()
dence_rank 會形成1,1,2,3,3,3… 這種形式的可重複且連續的序列(注意:2的位置,這個序列是會重複但是序列值是重複的)
相關推薦
Oracle中add_months()函式的用法
查詢當前時間1個月以前的時間: select add_months(sysdate,-1) from dual; 查詢當前時間1個月以後的時間: select add_months(sysdate,1) from dual; 如對公司員工表:查詢2年前進入公司的員工的姓
Oracle 的開窗函式 rank,dense_rank,row_number
1、開窗函式和分組函式的區別 分組函式是指按照某列或者某些列分組後進行某種計算,比如計數,求和等聚合函式進行計算。 開窗函式是指基於某列或某些列讓資料有序,資料行數和原始資料數相同,依然能曾現個體資料的原貌。 事例資料 create table student_scores( stu_id varch
【轉載】oracle中decode函式用法
1、DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)。表示假設value 等於if1時,DECODE函式的結果返回then1,...,假設不等於不論什麼一個if值。則返回else 2、該函式的含義例如以下: IF 條件=值1 TH
Oracle中instr函式使用方法
在Oracle/PLSQL中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,就是說從字元的開始到字元的結尾就結束 INSTR (源字串, 目標字串, 起始位置, 匹配序號) 在Oracle/PLSQL中,instr函式返回要擷取的字串在源字串中的位置。只檢
ORACLE中部分函式的用法
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else)
oracle中round函式的使用
Round 函式 語法為ROUND(number,num_digits) 其中Number是需要進行四捨五入的數字;Num_digits為指定的位數,按此位數進行四捨五入, 如果 num_digits 大於 0,則四捨五入到指定的小數位,如果 num_digits 等於
Oracle中呼叫函式的5種方法
--表主體: SQL> SELECT * FROM emp_pl; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- -
分組函式group by和Oracle中分析函式partition by的用法以及區別
今天有個同事給我打電話問我題目列出的這個問題,在日常開發中,確實它們倆都是與分組有關的,但是需要注意的是一個是分組函式另一個是分析函式,講解用到的表就以Oracle中schema的scott的EMP表和DEPT表為例做講解: 老總下命令說:需要統
oracle中填充函式lpad/rpad的使用
Lpad 1.語法 Lpad(string,pad_length,[pad_str]) 2.解釋 該函式表示從字串的左邊開始填充指定的字元到指定的長度。字串的空格也是算入長度中
oracle中的函式介紹(一):nvl函式、decode函式、case when函式、sum函式
最近做專案接觸到的oracle資料庫比較多,經常用到裡面的一些函式,以前的部落格中也介紹過行轉列和列轉行,這次再簡單給大家介紹幾個: nvl() NVL(a,b)就是判斷a是否是NULL,如果不
Oracle中coalesce函式的用法
學習了幾天教主的書,今天看到coalesce函式,功能很強大啊!coalesce函式的引數是列,結果是取出第一個不為空的列的資料。 首先,建一個檢視: CREATEORREPLACEVIEW v ASSELECTNULLAS c1,NULLAS c2,1 AS
oracle中to_char函式轉換數字格式不正確的問題
今天在工作中遇到將金額的number型別轉換成char型別,但是使用to_char()函式顯示的結果一直期望的結果。經過在網上查閱一番,總結如下: 我們使用Oracle 的SQL 函式 to_char可以實現這種轉換。 這個函式用來將DATE或NUMBER
Oracle中replace函式的使用
例: select filefullname from sys_frmattachmentdb 查詢的結果為: e:\GengBaoFile\TYGW\《歷城區專案立項審批流程》.1079\\3186.通用流程專案資料.jpg 需求: 要將結果中的“歷城區”修改為"北京
oracle中INSTR函式的用法
今天有個同學問我這個INSTR函式,我也不太清楚就上網查了查做一個小小的記錄吧 INSTR(C1,C2,I,J) 在一個字串中搜索指定的字元,返回發現指定的字元的位置; C1 被搜尋的字串 C2 希望搜尋的字串 I 搜尋的開始位置,預設為1 J 出現的位置,預設為1 S
Oracle中decode函式和sign函式的用法
資料庫表結構如下: 流程控制函式 DECODE decode()函式簡介: 主要作用: 將查詢結果翻譯成其他值(即以其他形式表現出來,以下舉例說明); 使用方法: Select decode(columnname,值1,翻譯值1,值2,翻譯值2,…值n,翻譯值n,預
oralce逗號分割變多行 Oracle中REGEXP_SUBSTR函式
Oracle中REGEXP_SUBSTR函式 Oracle中REGEXP_SUBSTR函式的使用說明: 題目如下: 在oracle中,使用一條語句實現將'17,20,23'拆分成'17','20','23'的集合。 REGEXP_SUBSTR函式格式如下: funct
Oracle中TO_NUMBER()函式的用法
1 用法簡介 TO_NUMBER函式()是Oracle中常用的型別轉換函式之一,主要是將字串轉換為數值型的格式,與TO_CHAR()函式的作用正好相反。 To_number函式的格式如下: To_number(varchar2 or char,’forma
Oracle中REGEXP_SUBSTR函式的使用說明
Oracle中REGEXP_SUBSTR函式的使用說明: 題目如下: 在oracle中,使用一條語句實現將'17,20,23'拆分成'17','20','23'的集合。 REGEXP_SUBSTR函式格式如下: function REGEXP_SUBSTR(String,
171207之Oracle中decode函式、SIGN函式和INSTR函式
一:DECODE的語法: DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value 等於if1時,DECODE函式的結果返回then1,…,如果不等於任何一個if值,則返回else。 dec
mysql中替代oracle中nvl()函式的ifnull()函式
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字串值,取決於它被使用的上下文環境。 1mysql> select IFNULL(1,0);2 -> 13mysql> select IFNULL(0,1