八. First,Last,First_value,Last_value取基数的分析函数 First功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。 Last功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。 FIRST_VALUE、LAST_VALUE:返回结果集中排在第一位和最后一位的值。 语法是: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
呵呵http://blog.csdn.net/elimago/archive/2008/07/15/2656387.aspx再给个短点的
http://hi.baidu.com/sonmeika/blog/item/9c5a24e9a83e9e3bb80e2dea.html
八. First,Last,First_value,Last_value取基数的分析函数
First功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
Last功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。 FIRST_VALUE、LAST_VALUE:返回结果集中排在第一位和最后一位的值。 语法是: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
更多有关分析函数的内容参考我的blog:
Oracle 分析函数
http://blog.csdn.net/tianlesoftware/archive/2009/11/10/4795632.aspx------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716