Sybase和Oracle+常用函数
- 格式:doc
- 大小:128.00 KB
- 文档页数:8
ORACLE_分析函数大全Oracle分析函数是一种高级SQL函数,它可以在查询中实现一系列复杂的分析操作。
这些函数可以帮助我们在数据库中执行各种数据分析和报表生成任务。
本文将介绍Oracle数据库中的一些常用分析函数。
1.ROW_NUMBER函数:该函数为查询结果中的每一行分配一个唯一的数字。
可以用它对结果进行排序或分组。
例如,可以使用ROW_NUMBER函数在结果集中为每个员工计算唯一的编号。
2.RANK和DENSE_RANK函数:这两个函数用于计算结果集中每个行的排名。
RANK函数返回相同值的行具有相同的排名,并且下一个排名值将被跳过。
DENSE_RANK函数类似,但是下一个排名值不会被跳过。
G和LEAD函数:LAG函数返回结果集中指定列的前一个(上一个)行的值,而LEAD函数返回后一个(下一个)行的值。
这些函数通常用于计算增长率或发现趋势。
4.FIRST和LAST函数:这两个函数用于返回结果集中分组的第一个和最后一个行的值。
可以与GROUPBY子句一起使用。
5.CUME_DIST函数:该函数用于计算给定值的累积分布。
它返回值的累积分布在结果集中的位置(百分比)。
6.PERCENT_RANK函数:该函数用于计算结果集中每个行的百分位数排名。
它返回值的百分位数排名(0到1之间的小数)。
7. NTILE函数:该函数用于将结果集分成指定数量的桶(Bucket),并为每个行分配一个桶号。
通常用于将数据分组为更小的块。
8.LISTAGG函数:该函数将指定列的值连接成一个字符串,并使用指定的分隔符分隔每个值。
可以用它将多个值合并在一起形成一个字符串。
9.AVG、SUM、COUNT和MAX/MIN函数:这些是常见的聚合函数,可以在分析函数中使用。
它们用于计算结果集中的平均值、总和、计数和最大/最小值。
以上只是Oracle数据库中的一些常用分析函数。
还有其他一些分析函数,如PERCENTILE_CONT、PERCENTILE_DISC等可以用于更高级的分析计算。
oracle 常用字符串函数Oracle是一种广泛使用的关系型数据库管理系统,它提供了许多强大的函数和工具来处理和管理数据。
在Oracle中,字符串函数是最常用的函数之一,它们可以帮助我们处理和操作字符串数据。
在本文中,我们将介绍一些常用的Oracle字符串函数。
1. SUBSTR函数SUBSTR函数用于从字符串中提取子字符串。
它的语法如下:SUBSTR(string, start_position, [length])其中,string是要提取子字符串的字符串,start_position是子字符串的起始位置,length是要提取的子字符串的长度(可选)。
如果省略length,则将提取从start_position开始的所有字符。
例如,以下语句将从字符串“Hello World”中提取“World”:SELECT SUBSTR('Hello World', 7) FROM dual;输出结果为:“World”。
2. INSTR函数INSTR函数用于查找字符串中某个子字符串的位置。
它的语法如下:INSTR(string, substring, [start_position], [nth_appearance])其中,string是要查找的字符串,substring是要查找的子字符串,start_position是查找的起始位置(可选),nth_appearance是要查找的子字符串的第几个出现位置(可选,默认为1)。
例如,以下语句将查找字符串“Hello World”中第一个出现的字母“o”的位置:SELECT INSTR('Hello World', 'o') FROM dual;输出结果为:5。
3. CONCAT函数CONCAT函数用于连接两个或多个字符串。
它的语法如下:CONCAT(string1, string2, ...)其中,string1、string2等是要连接的字符串。
oralce函数Oracle是一种关系数据库管理系统,它使用了一种名为Oracle数据库的数据库管理系统。
Oracle是一种强大的工具,提供了许多内置函数,可以用于在数据库中进行各种操作。
以下是一些常用的Oracle函数。
1.聚合函数-AVG:计算指定列的平均值。
-COUNT:计算指定列中非空数据的数量。
-SUM:计算指定列的总和。
-MAX:找到指定列的最大值。
-MIN:找到指定列的最小值。
2.字符串函数-CONCAT:将两个字符串连接成一个字符串。
-LOWER:将字符串转换为小写。
-UPPER:将字符串转换为大写。
-LENGTH:计算字符串的长度。
-SUBSTR:返回一个字符串的子字符串。
3.数值函数-ROUND:将一个数值四舍五入到指定的小数位数。
-CEIL:向上取整,返回不小于指定数值的最小整数。
-FLOOR:向下取整,返回不大于指定数值的最大整数。
-ABS:返回指定数值的绝对值。
-MOD:返回两个数值的余数。
4.日期和时间函数-SYSDATE:返回当前日期和时间。
-ADD_MONTHS:在指定日期上增加指定的月份。
-TRUNC:截断日期或时间到指定的精度。
-MONTHS_BETWEEN:计算两个日期之间的月数差。
-TO_CHAR:将日期转换为指定格式的字符串。
5.条件函数-DECODE:根据条件返回不同的值。
-CASE:根据条件执行不同的操作。
-NVL:如果给定的表达式为NULL,则将其替换为指定的值。
-NULLIF:如果两个表达式的值相等,则返回NULL。
6.分析函数-ROW_NUMBER:为每一行分配一个唯一的数字。
-RANK:为每一行分配一个排名,如果有并列的值,则排名相同。
-DENSE_RANK:为每一行分配一个排名,如果有并列的值,则排名可以重复。
-LEAD:返回指定行后的值。
-LAG:返回指定行前的值。
上述函数只是Oracle提供的一小部分功能,Oracle还提供了许多其他有用的函数。
sybase ifnull函数用法Sybase是一种关系型数据库管理系统,常用于企业级的数据存储、处理和查询。
ifnull函数是Sybase中一个非常重要的函数之一,它的作用是用来判断一个值是否为空,如果为空则返回默认值,如果不为空则返回该值本身。
ifnull函数的基本语法为:ifnull(expression1, expression2)expression1是需要判断是否为空的值,expression2是如果expression1为空需要返回的默认值。
如果expression1不为空,则返回expression1本身。
如果expression1为空,则ifnull函数会返回expression2的值,而如果expression1不为空,则ifnull函数会返回expression1的值。
那么ifnull函数怎么使用呢?我们来看一些例子:例子1:判断一个数值是否为空,为空则返回0```SELECT IFNULL(NULL, 0);```执行结果为:``````上面的例子中,我们传入了一个空值NULL作为第一个参数,而0作为第二个参数,因为第一个参数为空,所以ifnull函数返回了0。
例子2:从数据表中查询出某个字段的值,如果为空则返回"未知"```SELECT IFNULL(name, '未知') as name FROM students;```执行结果为:```name-------小明小花未知小刚小兰```上面的例子中,我们指定了一个表名为students,并查询了该表中的name字段,通过ifnull函数判断name字段是否为空,如果为空则返回"未知",否则返回该字段本身。
例子3:计算两个数值之和,如果其中有一个数值为空则返回另一个数值本身```SELECT IFNULL(num1, 0) + IFNULL(num2, 0) as sum FROM nums;```假设nums表中的数据如下:```num1 num2----- -----1 NULL3 4NULL 2```执行结果为:```sum-----172```上面的例子中,我们查询了nums表中的num1和num2字段的值,并使用ifnull函数来判断它们是否为空,如果为空则返回0,最后将两个值相加得到sum字段的值。
oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
ORACLE函数大全SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL〉 select ascii('A')A,ascii(’a') a,ascii('0’) zero,ascii(' ') space from dual;A A ZERO SPACE————-——-— -—---———- ---—----- ---————-—65 97 48 322.CHR给出整数,返回对应的字符;SQL〉 select chr(54740) zhao,chr(65) chr65 from dual;ZH C—— -赵 A3.CONCAT连接两个字符串;SQL> select concat('010—’,'88888888')||'转23’高乾竞电话 from dual;高乾竞电话—-——-———-—--——-—010—88888888转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL〉 select initcap('smith’) upp from dual;UPP—————Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1SQL> select instr(’oracle traning’,’ra',1,2) instring from dual;INSTRING—-—------96.LENGTH返回字符串的长度;SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;NAME LENGTH(NAME) ADDR LENGTH(ADDR) SALLENGTH(TO_CHAR(SAL))————-———---————-—- —--——---——----—- -———--—-—-—— ----———-————----—-——--—--—---高乾竞 3 北京市海锭区 6 9999.99 77。
ORACLE常用函数功能演示文档撰写:孟祥新写在前面:ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。
由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高。
在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率。
“站在高人的肩膀上,将使你变得更高”。
演示之前的环境设置:为了在SQL*PLUS中直观地显示函数返回的结果,我将“头”信息先屏蔽掉。
操作如下:一、单行函数1.数值函数(1)三角函数①SIN、ASIN、SINH(正弦、反正弦、双曲正弦)②COS、ACOS、COSH(余弦、反余弦、双曲余弦)③TAN、ATAN、TANH(正切、反正切,双曲正切)(2)幂、方根及对数运算函数①POWER(m, n)(取m的n次幂)②SQRT(n)(取n的平方根)③EXP(n)(取自然对数底e的n次方根)④LN(n)(取n的自然对数)⑤LOG(m, n)(取以m为底n的对数)以上函数功能演示如下:(3)数值处理函数①ABS(n)(取绝对值)②SIGN(n)(符号函数)③CEIL(n)(取不小于n的最小整数)④FLOOR(n)(取不大于n的最大整数)⑤ROUND(n, [m])(按m精度对n进行4舍5入)⑥TRUNC(n, [m])(按m精度对n进行截取)⑦MOD(m, n)(取m除以n的余数)以上函数功能演示如下:2.字符处理函数(1)对字符串的大小写处理的函数①INITCAP(功能:将字符串中每个单词的首字母,变换为大写。
)②UPPER(功能:将字符串中的所有字母,转换为大写。
)③LOWER(功能:将字符串中的所有字母,转换为小写。
)以上函数功能演示如下:(2)对字符串进行处理的函数①CONCAT(字符串连接函数,也可用|| 替代)功能演示如下:②ASCII(取字符的编码)③CHR(将编码转换为对应的字符)以上函数功能演示如下:④LTRIM(去除左侧空格/指定字符)⑤RTRIM(去除右侧空格/指定字符)⑥TRIM(去除两侧的空格/去除指定字符)以上函数去除空格功能演示如下:以上函数去除指定字符功能演示如下:请注意:在用TRIM去除字符串中指定字符(非空格)时的特殊用法。
sybase语法Sybase语法详解导语:Sybase是一种关系数据库管理系统(RDBMS),提供了强大的数据管理和处理功能。
本文将详细介绍Sybase的语法,包括数据表的创建、数据的插入与查询、条件筛选、排序和聚合函数等。
一、数据表的创建在Sybase中,可以使用CREATE TABLE语句来创建数据表。
语法如下:CREATE TABLE 表名 (列1 数据类型,列2 数据类型,列3 数据类型,...)例如,创建一个名为"employees"的数据表,包含"emp_id"、"emp_name"和"emp_salary"三列,分别为整数、字符和浮点数类型,可以使用以下语句:CREATE TABLE employees (emp_id INT,emp_name VARCHAR(50),emp_salary FLOAT)二、数据的插入与查询1. 数据插入使用INSERT INTO语句可以向Sybase数据库中的数据表插入数据。
语法如下:INSERT INTO 表名(列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...)例如,向"employees"表中插入一条员工数据,可以使用以下语句:INSERT INTO employees (emp_id, emp_name, emp_salary) VALUES (1, '张三', 5000)2. 数据查询使用SELECT语句可以从Sybase数据库中的数据表中查询数据。
语法如下:SELECT 列1, 列2, 列3, ... FROM 表名例如,查询"employees"表中所有员工的姓名和工资,可以使用以下语句:SELECT emp_name, emp_salary FROM employees三、条件筛选使用WHERE子句可以对查询结果进行条件筛选。
1、两个oracle 开发工具介绍a)SqlDbx王金生曾推荐过的一款数据库客户端开发工具,使用容易,不需要额外的安装其它插件,有sql提示功能,支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server 和ODBC数据源,免费绿色版。
b)PLSQL Developer专门针对oracle开发的一款比较专业的客户端工具,除了常用的数据库操作外,还支持存储过程及函数的调试功能等比较高级的功能,详细的操作可以安装完毕后大家去慢慢研究。
配置方式见网上找的一段方法,第二种:/view/65b5a80f6c85ec3a87c2c583.html以上提到的工具及可能用到的插件见共享目录中的文件。
2、oracle 与 sqlserver 语法大比较a)oracle各类型字段描述b)字段类型比较c)常用函数比较注:此处仅记录语法有区别的地方,更多丰富的语法请查看附件中的手册。
以下的exp为expression的缩写d)关于脏读目前我们使用的sqlserver 数据库,在查询数据时,都要求在select语句中后面跟一个(nolock)或(with nolock)来保证读取大表时不影响其它程序进程的数据操作。
在oracle中,目前还不允许脏读的方式,在每次select 后,读到的数据都是已经commit的数据,所以为了避免读取数据的不准确,程序中如果有比较耗时的sql 操作,尤其是在insert 和update后,尽量减小事务,而且要在事务结束后及时commit。
e)表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。
主要区别如下:Oracle定义表字段的default属性紧跟字段类型之后,如下:Create table MZ_Ghxx( ghlxh number primay key ,rq date default sysdate not null,….)而不能写成Create table MZ_Ghxx( ghlxh number primay key ,rq date not null default sysdate,….)f)存储过程/函数结构的不同SQLSERVER中存储过程的结构大致如下CREATE PROCEDURE procedure_name/*输入、输出参数的声明部分*/ASDECLARE/*局部变量的声明部分*/BEGIN/*主体SQL语句部分*//*游标声明、使用语句在此部分*/ENDORACLE中存储过程的结构大致如下CREATE OR REPLACE PROCEDURE procedure_name(/*输入、输出参数的声明部分*/ )AS/*局部变量、游标等的声明部分*/BEGIN/*主体SQL语句部分*//*游标使用语句在此部分*/EXCEPTION/*异常处理部分*/END ;ORACLE端FUNCTION语法说明CREATE [OR REPLACE] FUNCTION function_name[(argument [{IN | OUT | IN OUT }] ) type,…[(argument [{IN | OUT | IN OUT }] ) typeRETURN return_type {IS | AS}BEGIN…END;变量赋值在SQL SERVER语句中用如下语句对局部变量赋值(初始值或数据库表的字段值或表达式):“SELECT 局部变量名= 所赋值(初始值或数据库表的字段值或表达式)”;而在ORACLE中,将初始值赋给局部变量时,用如下语句:“局部变量名: = 所赋值(初始值或表达式);”,将检索出的字段值赋给局部变量时,用如下语句:“SELECT 数据库表的字段值INTO 局部变量名…”。
1、S ybase相关函数1.1同期值的计算SELECT A.ID,A.CALC_MONTH,A.NUM,B.TQ_NUMFROM (SELECT A.ID,A.CALC_MONTH,NUM FROM) ALEFT JOIN (SELECT B.ID,B.CALC_MONTH,TQ_NUM FROM) BON A.ID=B.ID AND A.CALC_MONTH=(CONVERT(INT,SUBSTR(B.CALC_MONTH,1,4))+1)||SUBSTR (B.CALC_MONTH,5,2)1.2累计及同期累计值的计算SUM(Column) OVER(PARTITION BY Column1,Column2,Column3... ORDER BY Column4 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) LJ_ Column –累计值SUM(TQ_Column) OVER(PARTITION BY Column1,Column2,Column3... ORDER BY Column4 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) TQ_LJ_ Column –同期累计值1.3TOP排序DENSE_RANK() OVER(PARTITION BY Column1,Column2 ORDER BY Column3 DESC) TOP_N---排名1.4日期转换格式Dateformat(日期字段,'yyyymmdd'). 其中日期字段必须为日期类型,否则不能进行转换例如:dateformat(getdate(),’yyyymm’)1.5返回指定小数点位数。
round(numeric_expr,int_expr) ----把数值表达式圆整到int_expr指定的精度例如:Round(convert(float,字段类型),2)1.6转换函数convert此函数把值从一种类型改变成另一种类型convert(datetype [(length)],expression)例如:select "Advance="+convert(char(12),advance) from titles1.7大小写转换upper(char_expr) 把char_expr转换成大写形式lower(char_expr) 把char_expr转换成小写形式1.8删除空格ltrim(char_expr) 删除头空rtrim(char_expr) 删除尾空1.9数学函数abs(numeric_expr) 返回指定值的绝对值ceiling(numeric_expr) 返回大于或等于指定值的最小整数exp(float_expr) 给出指定值的指数值floor(numeric_expr) 返回小于或等于指定值的最大整数pi() 返回常数3.1415926power(numeric_expr,power)返回numeric_expr的值给power的幂rand([int_expr]) 返回0-1之间的随机浮点数,可指定基值round(numeric_expr,int_expr)把数值表达式圆整到int_expr指定的精度sign(int_expr) 返回正+1,零0或负-1sqrt(float_expr) 返回指定值的平方根1.10日期函数getdate() 返回当前的系统日期和时间datename(datepart,date_expr) 以字符串形式返回date_expr指定部分的值,转换成合适的名字datepart(datepart,date_expr ) 作为整数返回date_expr值的指定部分datediff(datepart,date_expr1,date_expr2) 返回date_expr2-date_expr1,通过指定的datepart度量dateadd(datepart,number,date_expr)返回日期,通过在date_expr上增加指定number的日期部件而产生的1.11ISNULL函数isnull函数用指定的值代替查询栏或合计中的空值例:select avg(isnull(total_order,$0)) from invoices以下为Sybase函数大全,集中了大部分操作中所用到的函数信息。
(详见:SVN\参考资料\ETL参考资料\Sybase参考资料\Sybase函数大全)2、O racle相关函数2.1 Oracle分析函数1SUM功能描述:该函数计算组中表达式的累积和。
MIN功能描述:在一个组中的数据窗口中查找表达式的最小值。
SAMPLE:下面例子中dept_min返回当前行所在部门的最小薪水值MAX功能描述:在一个组中的数据窗口中查找表达式的最大值。
AVG功能描述:用于计算一个组和数据窗口内表达式的平均值。
COUNT功能描述:对一组内发生的事情进行累积计数,如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数。
2.2 Oracle分析函数2RANK:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置同组内跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)DENSE_RANK:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置同组内连续排序,有两个第二名时仍然跟着第三名。
FIRST:从DENSE_RANK返回的集合中取出排在最前面的一个值的行LAST:从DENSE_RANK返回的集合中取出排在最后面的一个值的行FIRST_VALUE:返回组中数据窗口的第一个值LAST_VALUE:返回组中数据窗口的最后一个值。
LAG:可以访问结果集中的其它行而不用进行自连接LEAD:LEAD与LAG相反,LEAD可以访问组中当前行之后的行ROW_NUMBER:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号2.3 Oracle分析函数3STDDEV :计算当前行关于组的标准偏离STDDEV_POP:该函数计算总体标准偏离,并返回总体变量的平方根STDDEV_SAMP:该函数计算累积样本标准偏离,并返回总体变量的平方根VAR_POP :该函数返回非空集合的总体变量(忽略null)VAR_SAMP :该函数返回非空集合的样本变量(忽略null)VARIANCE :如果表达式中行数为1,则返回0,如果表达式中行数大于1,则返回VAR_SAMPCOVAR_POP :返回一对表达式的总体协方差COVAR_SAMP:返回一对表达式的样本协方差CORR :返回一对表达式的相关系数2.4 Oracle分析函数4CUME_DIST :计算一行在组中的相对位置NTILE :将一个组分为"表达式"的散列表示PERCENT_RANK:和CUME_DIST(累积分配)函数类似PERCENTILE_DISC:返回一个与输入的分布百分比值相对应的数据值PERCENTILE_CONT:返回一个与输入的分布百分比值相对应的数据值RATIO_TO_REPORT:该函数计算expression/(sum(expression))的值,它给出相对于总数的百分比REGR_ (Linear Regression) Functions:这些线性回归函数适合最小二乘法回归线,有9个不同的回归函数可使用-------------------------------------------------------------------------------------------------2.5 Oracle分析函数的语法:function_name(arg1,arg2,...) over (<partition-clause> <order-by-clause ><windowing clause>)说明:1. partition-clause 数据记录集分组2. order-by-clause 数据记录集排序3. windowing clause 功能非常强大、比较复杂,定义分析函数在操作行的集合。
有三种开窗方式: range、row、specifying。
--Partition by,按相应的值(manager_id)进行分组统计--Order by按相应的值(hire_date)进行排序并累计统计--Partition by Order by首先按相应的值(manager_id,hire_date)排序,并按order by 的值(hire_date)进行累计统计2.6 Oracle分析函数5(求本期、累计值、最大、最小、平均值):昨日值:first_value(ydljfd_v) over (partition by id order by ddate RANGE NUMTODSINTERVAL(1,'day') PRECEDING) ydljfd_v_ldval上周同期值:first_value(ydljfd_v) over (partition by id order by ddate RANGE NUMTODSINTERVAL(7,'day') PRECEDING) ydljfd_v_lwdval上月同期值:FIRST_VALUE(ydljfd_v) OVER(PARTITION BY id ORDER BY ddate RANGE NUMTOYMINTERVAL(1,'month') PRECEDING) ydljfd_v_lmdvalFIRST_VALUE(B.SDL) OVER(PARTITION BY B.DEPT_ID ORDER BY TO_DATE(B.CALC_MONTH,'YYYY-MM') RANGE NUMTOYMINTERVAL(1,'YEAR') PRECEDING), --上年同期值max(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdmmax, --当月最大值min(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdmmin, --当月最小值sum(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdmsum, --当月累计值avg(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdmavg, --当月平均值max(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ydljfd_v_cammax, --全月最大值min(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ydljfd_v_cammin, --全月最小值sum(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ydljfd_v_camsum, --全月累计值avg(ydljfd_v) over (partition by id,trunc(ddate,'mm') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ydljfd_v_camavg, --全月平均值max(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdymax, --本年最大值min(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdymin, --本年最小值sum(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdysum, --本年累计值avg(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ydljfd_v_cdyavg, --本年平均值max(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)ydljfd_v_caymax, --本年最大值min(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)ydljfd_v_caymin, --本年最小值sum(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)ydljfd_v_caysum, --本年累计值avg(ydljfd_v) over (partition by id,trunc(ddate,'yyyy') order by ddate rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)ydljfd_v_cayavg, --本年平均值max(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -last_day(add_months(ddate,-1)))preceding) ydljfd_v_lmamax,--上月全月最大值min(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -last_day(add_months(ddate,-1)))preceding) ydljfd_v_lmamin,--上月全月最小值sum(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -last_day(add_months(ddate,-1)))preceding) ydljfd_v_lmasum,--上月全月累计值avg(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -last_day(add_months(ddate,-1)))preceding) ydljfd_v_lmaavg, --上月全月平均值max(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lmdmax,--上月同期最大值min(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lmdmin,--上月同期最小值sum(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lmdsum,--上月同期累计值avg(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lmdavg, --上月同期平均值max(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-12),'mm')) preceding AND (ddate -add_months(ddate,-12))preceding) ydljfd_v_lymdmax,--去年同期当月最大值min(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-12),'mm')) preceding AND (ddate -add_months(ddate,-12))preceding) ydljfd_v_lymdmin,--去年同期当月最小值sum(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-12),'mm')) preceding AND (ddate -add_months(ddate,-12))preceding) ydljfd_v_lymdsum,--去年同期当月累计值avg(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-12),'mm')) preceding AND (ddate -add_months(ddate,-12))preceding) ydljfd_v_lymdavg --去年同期当月平均值max(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-13),'mm')) preceding AND (ddate -last_day(add_months(ddate,-13)))preceding) ydljfd_v_lylmamax,--去年同期上月全月最大值min(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-13),'mm')) preceding AND (ddate -last_day(add_months(ddate,-13)))preceding) ydljfd_v_lylmamin,--去年同期上月全月最小值sum(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-13),'mm')) preceding AND (ddate -last_day(add_months(ddate,-13)))preceding) ydljfd_v_lylmasum,--去年同期上月全月累计值avg(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-13),'mm')) preceding AND (ddate -last_day(add_months(ddate,-13)))preceding) ydljfd_v_lylmaavg, --去年同期上月全月平均值max(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lylmdmax,---去年同期上月最大值min(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lylmdmin,--去年同期上月最小值sum(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lylmdsum,--去年同期上月累计值avg(ydljfd_v) over (partition by id order by ddate RANGE BETWEEN (ddate-trunc(add_months(ddate,-1),'mm')) preceding AND (ddate -add_months(ddate,-1))preceding) ydljfd_v_lylmdavg --去年同期上月平均值其相关信息如下:(详见:SVN\参考资料\ETL参考资料\Oracle参考资料\分析函数.xls)D:\学习资料\Oracle资料\分析函数.2.7 Oracle分析函数6(oracle.10G函数大全)(详见:SVN\参考资料\ETL参考资料\Oracle参考资料\ oracle.10G函数大全.chm)。