分析函数

发布时间:2023-02-21 22:26:44   来源:文档文库   
字号:
分析函数简述注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式。分析函数计算基于groupby的列,分组查询出的行被称为"比照(window",在根据over(执行过程中,针对每一行都会重新定义比照。比照为"当前行(currentrow"确定执行计算的行的范围。这点一定要理解清楚。它是分析函数生成数据的原理。如果此处模糊,那么你在应用分析函数时恐就不会那么得心应手了。分析函数与前面章节中讲到的聚合函数非常相似,不同于聚合函数的地方在于它们每个分组序列均返回多行。在本节示例中会同时应用两种函数做对比,以更好体现二者的差异。通过本章节练习相信大家就会注意到,部分聚合函数和分析函数是同一个命令,事实确实如此。如果语法格式上区分的话,没加over(的即是聚合函数,加了over(即是分析函数:有一点需要注意哟,除了orderby子句的运算外,分析函数在SQL语句中将会最后执行。因此,分析函数只能应用于select的列或orderby子句中(记住喽,千万别扔到什wheregroupbyhaving之类的地方了。也正因此,同名的函数在做为聚合函数和分析函数时得出的结果可能不相同,就是因为此处运算逻辑不同造成的。同时,部分分析函数在选择列时支持distinct,如果你指定了该参数,则over条件中就只能指定partition子句,而不能再指定orderby子句了。分析函数的语法结构比较复杂,但多数函数都具有相同的语法结构,所以先在之前进
行统一介绍,后续单个函数介绍时就不过多说明函数语法结构了。基本上所有的分析函数均是这种格式:函数名称([参数]OVER(analytic_clauseanalytic_clause包含:[partition子句][order子句[window子句]]Partition子句:Partitionbyexp1[,exp2]...Partition没啥说的,功能强大参数少,主要用于分组,可以理解成select中的groupby。不过它跟select语句后跟的groupby子句并不冲突。Order子句:Orderbyexp1[asc|desc][,exp2[asc|desc]]...[nullsfirst|last]。部分函数支持window子句。Orderby的参数基本与select中的orderby相同。大家按那个理解就是了。Nullsfirst|last是用来限定nulls在分组序列中的所在位置的,我们知道oracle中对于null的定义是未知,所以默认ordery的时候nulls总会被排在最前面。如果想控制值为null的列的话呢,nullsfirst|last参数就能派上用场了。Window子句:En,贴个图吧

本文来源:https://www.2haoxitong.net/k/doc/c711a0f00c22590102029d41&title=%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0.html

《分析函数.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式