oracle 分析函数视频教程,Oracle 分析函数使用教程(3)
開(kāi)窗條件query_partition_clause決定被除數(shù)的值, 如果用戶忽略了這個(gè)條件, 則計(jì)算查詢結(jié)果中所有記錄的匯總值.
用戶不能使用其他分析函數(shù)或者ratio_to_report作為分析函數(shù)ratio_to_report的參數(shù)expr, 也就是說(shuō)這個(gè)函數(shù)不能循環(huán)使用. 但我們可以使用其他普通函數(shù)作為這個(gè)分析函數(shù)的查詢結(jié)果.
RATIO_TO_REPORT解析函數(shù)使得這種類型的查詢更容易編碼。它的格式如下:
RATIO_TO_REPORT (expr) OVER (query_partition_clause)
/* FORMATTED ON 2009/11/10 20:24 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, SAL, DEPTNO, RATIO_TO_REPORT (SAL) OVER () AS RR
FROM SCOTT.EMP
WHERE DEPTNO = 10;
ENAME
SAL
DEPTNO
RR
CLARK
2,450
10
0.28
KING
5,000
10
0.571428571428571
MILLER
1,300
10
0.148571428571429
/* FORMATTED ON 2009/11/10 20:36 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, SAL, DEPTNO,
RATIO_TO_REPORT (SAL) OVER (PARTITION BY DEPTNO) AREA_PCT
FROM SCOTT.EMP;
ENAME
SAL
DEPTNO
AREA_PCT
CLARK
2,450.0000000000
10
0.2800000000
KING
5,000.0000000000
10
0.5714285714
MILLER
1,300.0000000000
10
0.1485714286
JONES
2,975.0000000000
20
0.2735632184
FORD
3,000.0000000000
20
0.2758620690
ADAMS
1,100.0000000000
20
0.1011494253
SMITH
800.0000000000
20
0.0735632184
SCOTT
3,000.0000000000
20
0.2758620690
WARD
1,250.0000000000
30
0.1329787234
TURNER
1,500.0000000000
30
0.1595744681
ALLEN
1,600.0000000000
30
0.1702127660
JAMES
950.0000000000
30
0.1010638298
BLAKE
2,850.0000000000
30
0.3031914894
MARTIN
1,250.0000000000
30
0.1329787234
八. First,Last,First_value,Last_value取基數(shù)的分析函數(shù)
First功能描述:從DENSE_RANK返回的集合中取出排在最前面的一個(gè)值的行(可能多行,因?yàn)橹悼赡芟嗟?,因此完整的語(yǔ)法需要在開(kāi)始處加上一個(gè)集合函數(shù)以從中取出記錄。
Last功能描述:從DENSE_RANK返回的集合中取出排在最后面的一個(gè)值的行(可能多行,因?yàn)橹悼赡芟嗟?,因此完整的語(yǔ)法需要在開(kāi)始處加上一個(gè)集合函數(shù)以從中取出記錄。
FIRST_VALUE、LAST_VALUE:返回結(jié)果集中排在第一位和最后一位的值。
語(yǔ)法是:FIRST_VALUE (expr) OVER ( analytic_clause)
/* FORMATTED ON 2009/11/10 20:51 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, DEPTNO, SAL,
MIN (SAL)KEEP (DENSE_RANK FIRST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Worst",
MAX (SAL)KEEP (DENSE_RANK LAST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Best"
FROM SCOTT.EMP;
ENAME
DEPTNO
SAL
Worst
Best
CLARK
10
2,450
1,300
5,000
KING
10
5,000
1,300
5,000
MILLER
10
1,300
1,300
5,000
JONES
20
2,975
800
3,000
FORD
20
3,000
800
3,000
ADAMS
20
1,100
800
3,000
SMITH
20
800
800
3,000
SCOTT
20
3,000
800
3,000
WARD
30
1,250
950
2,850
TURNER
30
1,500
950
2,850
ALLEN
30
1,600
950
2,850
JAMES
30
950
950
2,850
BLAKE
30
2,850
950
2,850
MARTIN
30
1,250
950
2,850
/* Formatted on 2009/11/10 20:55 (Formatter Plus v4.8.8) */
SELECT ENAME, DEPTNO, SAL,
FIRST_VALUE (ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL ASC) AS LOWEST_SAL
FROM SCOTT.EMP;
ENAME
DEPTNO
SAL
LOWEST_SAL
MILLER
10
1,300
MILLER
CLARK
10
2,450
MILLER
KING
10
5,000
MILLER
SMITH
20
800
SMITH
ADAMS
20
1,100
SMITH
JONES
20
2,975
SMITH
FORD
20
3,000
SMITH
SCOTT
20
3,000
SMITH
JAMES
30
950
JAMES
MARTIN
30
1,250
JAMES
WARD
30
1,250
JAMES
TURNER
30
1,500
JAMES
ALLEN
30
1,600
JAMES
BLAKE
30
2,850
JAMES
九. Greatest, Least 函數(shù)
Greatest函數(shù):取一個(gè)一維數(shù)組中的最大值。
Least函數(shù):取一個(gè)一維數(shù)組中的最小值。
/* Formatted on 2009/11/10 20:59 (Formatter Plus v4.8.8) */
SELECT GREATEST (1, 2, 3, 4, 5, 6) MAX
FROM DUAL;
/* Formatted on 2009/11/10 20:59 (Formatter Plus v4.8.8) */
SELECT LEAST (1, 2, 3, 4, 5, 6) MIN
FROM DUAL;
十. Trunc, round, decode,substr函數(shù)
全角的數(shù)字/字母/標(biāo)點(diǎn)符號(hào)轉(zhuǎn)半角to_single_byte
10.1 Trunc 函數(shù)
Trunc實(shí)際上是truncate函數(shù),字面意思是截?cái)?#xff0c;截尾。函數(shù)的功能是將數(shù)字進(jìn)行截?cái)?。tranc()并不四舍五入。
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, 2) rs
FROM DUAL;
RS
----------
1234.56
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, 0) rs
FROM DUAL;
RS
----------
1234
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, -2) rs
FROM DUAL;
RS
------------
1200
10.2 Round 函數(shù)
Round 函數(shù): 返回按指定位數(shù)進(jìn)行四舍五入的數(shù)值。
語(yǔ)法: Round(expression[, numdecimalplaces])
expression 必選。 數(shù)值表達(dá)式 被四舍五入。
numdecimalplaces 可選。數(shù)字表明小數(shù)點(diǎn)右邊有多少位進(jìn)行四舍五入。如果省略,則 Round 函數(shù)返回整數(shù)。
/* Formatted on 2009/11/10 21:23 (Formatter Plus v4.8.8) */
SELECT ROUND (12.45, 1) rs
FROM DUAL;
RS
---------------
12.5
10.3 Decode 函數(shù)
decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
decode(字段或字段的運(yùn)算,值1,值2,值3)
SELECT DECODE (value, , ) FROM table
這個(gè)函數(shù)運(yùn)行的結(jié)果是,當(dāng)字段或字段的運(yùn)算的值等于值1時(shí),該函數(shù)返回值2,否則返回值3
當(dāng)然值1,值2,值3也可以是表達(dá)式,這個(gè)函數(shù)使得某些sql語(yǔ)句簡(jiǎn)單了許多
/* Formatted on 2009/11/10 21:28 (Formatter Plus v4.8.8) */
SELECT DECODE (NAME, 'Dave', 'I Love BL', 'NoLove') rs
FROM (SELECT 'Dave' NAME
FROM DUAL);
RS
---------
I Love BL
/* Formatted on 2009/11/10 21:29 (Formatter Plus v4.8.8) */
SELECT DECODE (NAME, 'BL', 'I love Dave', 'NoLove') rs
FROM (SELECT 'Dave' NAME
FROM DUAL);
RS
------
NoLove
10.4 SubStr 函數(shù)
SUBSTR(string,start,count) : 取子字符串,從start開(kāi)始,取count個(gè)。
/* Formatted on 2009/11/10 21:37 (Formatter Plus v4.8.8) */
SELECT SUBSTR ('I Love You', 3, 4) rs
FROM DUAL;
RS
----
Love
總結(jié)
以上是生活随笔為你收集整理的oracle 分析函数视频教程,Oracle 分析函数使用教程(3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 优惠卷测试案例
- 下一篇: 计算机考试打印测试页,通过电脑打印测试页