1)要查詢創建分區的信息,可以通過查詢user_part_tables,user_tab_partitions兩個數據字典(索引分區、組織分區等信息也有對應的數據字典)。
user_part_tables:記錄分區的表的信息;
user_tab_partitions:記錄表的分區的信息。
2)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參數就能派上用場了。