2E./#/./#//#//#//#//#//#//#//#//#/#A))/#//#//#/#2E9/#///%!/#//#//#//#//#//#//#///)))/#//#//#/#
DENSE_RANK 功能描述:根据 ;#: 子句中表达式的值,从查询返回的每一行,计算它们与
其它行的相对位置。组内的数据按 ;#: 子句排序,然后给每一行赋一个号,从而形成一个序列,
该序列从 开始,往后累加。每次 ;#: 表达式的值发生变化时,该序列也随之增加。有同样值的
行得到同样的数字序号(认为 时相等的)。密集的序列返回的值没有间隔的数
2:下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与 9. 函数的
区 别 ) - # % # 3 # 3 # !3 # ;99.67 #/# //# ///4
62-8-89 # : # % # ; # : # !7 # # L//= # %! # 3
% # < # % # H # % /# /9; # % # 89
6NO)NO3 # NO0)NO7> # ;2-9-8; # -9/# //# //# //# //# //# //# //# //# /
;9.,,,,,,,,,,,,,#,,,,,,,,,,,,,,,,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,/#//#//#///)# Q/#//#//#//#//#//#//#//#/#C?))/#//#//#/#
/#//#//#///)# /#//#//#//#//#//#//#//#///C))/#//#//#/#?/#//#//#///)#2 $/#//#//#//#//#//#//#///C))/#//#//#/
?/#//#//#///)# /#//#//#//#//#//#//#//#//#/)))/#//#//#/#A/#//#//#///)#/#//#//#//#//#//#//#//#///0)))/#//#//#/
C/#//#//#///0)#./#//#//#//#//#//#//#//#/@)))/#//#//#/#/#//#//#///0)#;#/#//#//#//#//#//#//#//#/@)))/#//#//#/#
/#//#//#///0)#.&/#//#//#//#//#//#//#//#//#/?C)))/#//#//#/#?
=8-#功能描述:从 ;99. 返回的集合中取出排在最前面的一个值的行(可能多行,因为值
可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录
2:下面例子中 ;99. 按部门分区,再按佣金 % 排序,=8- 取出佣
金最低的对应的所有行,然后前面的 R 函数从这个集合中取出薪水最低的值;- 取出佣金最高的
对 应 的 所 有 行 , 然 后 前 面 的 89 函 数 从 这 个 集 合 中 取 出 薪 水 最 高 的 值 -# 3
% 3 # !3/# //# //# /896!7 # .2# 6;99. # =8- # ; # :
% 7/#//#//#/4#62-8-89#:#% 7#S< S3/#//#//#/R6!7#.2
6;99.#-#;#:#% 7/#//#//#/4#62-8-89#:#% 7
S: S//= # %! # < # % # # 6?)3)7 # ; # : # % 3
!>-9/# //# //# //# //# ///;2-9-8;/# ////# //# /< /# //# /
: ,,,,,,,,,,,,,,,,,,,,,,,,,#,,,,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,=!/# //# //# //# //# //# //#//# //#//# //# /# ?)/# //# /
)))/#//#/#)))/#//#/A))) /#//#//#//#//#//#//#//#//#/#?)/#//#/A)))/#//#/#)))/#//#/A)))./#//#//#//#//#//#//#//#//#//#///
)/# //# /# ))/# //# /# ))/# //# /C))):/# //# //# //# //# //# //# //# //# //# ///)/# //# /# ?))/# //# /# ))/# //# /
C)))B/#//#//#//#//#//#//#//#//#//#/)/#//#/#?))/#//#/#))/#//#/C)))/#//#//#//#//#//#//#//#//#//#//#/
)/# //# /# C))/# //# /# ))/# //# /C)))/# //# //# //# //# //# //# //# //# //# //# /# )/# //# /# ))/# //# /# ))/# //# /
C)))-" /#//#//#//#//#//#//#//#//#//#/)/#//#/#@)))/#//#/#))/#//#/C)))'/#//#//#//#//#//#//#//#//#//#/
)/# //# /# @)))/# //# /# ))/# //# /C)))"/# //# //# //# //# //# //# //# //# //# /)/# //# /# @?))/# //# /# ))/# //# /
C))): /#//#//#//#//#//#//#//#//#//#///)/#//#/#@A))/#//#/#))/#//#/C)))
FIRST_VALUE功能描述:返回组中数据窗口的第一个值。
2:下面例子计算按部门分区按薪水排序的数据窗口的第一个值对应的名字,如果薪水的第一
个值有多个,则从多个对应的名字中取缺省排序的第一个名字 -#% 3# 3
!3 # =8-4E6 7//4 # 62-8-89 # : # % # ; # : # !
# 7 # # ' //=#%!# <# % # 6?)3A)7>;2-9-8;
-9/# //# //# //# //# //# //# / # <-,,,,,,,,,,,,, # ,,,,,,,,,,,,,,,,,,,,,,,,, # ,,,,,,,,,,
,,,,,,,,,,,,,,/#//#//#///?)#=!/#//#//#//#//#//#//#//#//#///)))#=!/#//#//#///?)# /#//#//#//#//#//#//#/#A)))
=!/#//#//#///A)#/#//#//#//#//#//#//#/#?())#/#//#//#///A)#/#//#//#//#//#//#//#//#///
?))#/#//#//#///A)#-$/#//#//#//#//#//#//#//#///?))#/#//#//#///A)#:/#//#//#//#//#//#//#//#//#/
?0))#/#//#//#///A)#./#//#//#//#//#//#//#//#//#/#A))#/#//#//#///A)#%!/#//#//#//#//#//#//#///