ORACLE函式介紹第五篇 分析函式簡述
注:N表示數字型,C表示字元型,D表示日期型,[]表示內中引數可被忽略,fmt表示格式。
分析函式計算基於group by的列,分組查詢出的行被稱為"比照(window)",在根據over()執行過程中,針對每一行都會重新定義比照。比照為"當前行(current row)"確定執行計算的行的範圍。這點一定要理解清楚。它是分析函式生成資料的原理。如果此處模糊,那麼你在應用分析函式時恐就不會那麼得心應手了。
分析函式與前面章節中講到的聚合函式非常相似,不同於聚合函式的地方在於它們每個分組序列均返回多行。在本節示例中會同時應用兩種函式做對比,以更好體現二者的差異。通過本章節練習相信大家就會注意到,部分聚合函式和分析函式是同一個命令,事實確實如此。如果從語法格式上區分的話,沒加over()的即是聚合函式,加了over()即是分析函式:)
有一點需要注意喲,除了order by子句的運算外,分析函式在SQL語句中將會最後執行。因此,分析函式只能應用於select的列或order by子句中(記住嘍,千萬別扔到什麼where、group by、having之類的地方了)。也正因此,同名的函式在做為聚合函式和分析函式時得出的結果可能不相同,就是因為此處運算邏輯不同造成的。
同時,部分分析函式在選擇列時支援distinct,如果你指定了該引數,則over條件中就只能指定partition子句,而不能再指定order by 子句了。
分析函式的語法結構比較複雜,但多數函式都具有相同的語法結構,所以先在之前進行統一介紹,後續單個函式介紹時就不過多說明函式語法結構了。
基本上所有的分析函式均是這種格式:
函式名稱 ([引數]) OVER (analytic_clause)
analytic_clause包含:[partition 子句][ order 子句 [window子句]]
Partition 子句:Partition by exp1[ ,exp2]...
Partition沒啥說的,功能強大引數少,主要用於分組,可以理解成select中的group by。不過它跟select語句後跟的group by 子句並不衝突。
Order子句:Order by exp1[asc|desc] [ ,exp2 [asc|desc]]... [nulls first|last]。部分函式支援window子句。
Order by的引數基本與select中的order by相同。大家按那個理解就是了。Nulls first|last是用來限定nulls在分組序列中的所在位置的,我們知道oracle中對於null的定義是未知,所以預設ordery的時候nulls總會被排在最前面。如果想控制值為null的列的話呢,nulls first|last引數就能派上用場了。
Window子句:En,貼個圖吧
看起來複雜其實簡單,而且應用的機率相當的低,不詳細介紹了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-22282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle常用函式介紹Oracle函式
- 原創:oracle聚合函式介紹Oracle函式
- 簡單介紹JS函式防抖和函式節流JS函式
- Oracle分析函式與視窗函式Oracle函式
- 函式式API簡介函式API
- stoi函式介紹函式
- 10-函式-1-函式簡介函式
- match函式簡單介紹以及與index函式結合應用函式Index
- 高階函式簡述 js函式JS
- 簡述箭頭函式和普通函式的區別函式
- php 函式簡介PHP函式
- cuda函式庫介紹函式
- funclib函式庫介紹函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- (譯) 函式式 JS #1:簡介函式JS
- 簡單介紹Python 如何擷取字元函式Python字元函式
- 簡單介紹python的input,print,eval函式Python函式
- Dart建構函式介紹Dart函式
- javascript函式中with的介紹JavaScript函式
- Python資料分析--Numpy常用函式介紹(3)Python函式
- Python資料分析--Numpy常用函式介紹(2)Python函式
- Python資料分析--Numpy常用函式介紹(5)--Numpy中的相關性函式Python函式
- Python資料分析--Numpy常用函式介紹(7)--Numpy中矩陣和通用函式Python函式矩陣
- 實用函式式 Java (PFJ)簡介函式Java
- ORACLE分析函式手冊(轉)Oracle函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- 簡單介紹Python中的配對函式zip()Python函式
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- python函式作用域簡介Python函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- javascript中generator函式的介紹JavaScript函式
- javascript高階函式的介紹JavaScript函式
- ES6 Generator 函式介紹函式
- 快速介紹幾個JS函式JS函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- ORACLE分析函式手冊二(轉)Oracle函式
- JMeter36個內建函式及11個新增函式介紹JMeter函式
- 雜篇:Android繪製函式圖象及正弦函式的介紹Android函式