Oracle 分析函数
分析函数是oracle816引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有相当大的提高.
下面主要介绍一下以下几个函数的使用方法
1. Over() 开窗函数
2. Nvl()函数
3. Rollup,Cube自动汇总函数
4. Rank,Dense_rank,Row_number函数
5. Lag , Lead函数
6. Sum,Avg, Count, Max函数
7. Ratio_to_report报表处理函数
8. First,Last,First_value,Last_value取基数的分析函数
9. Greatest, Least 函数
10. Trunc, Round,Decode, Substr函数
一. Over() 开窗函数
Over() 开窗函数是Oracle的分析函数,其语法如下:
函数名([ 参数 ]) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ])
分区子句类似于聚组函数所需要的group by,排序子句可看成是SQL语句中的order by,只不过在此语句中还可指定null值排前(nulls first)还是排后(nulls last)。
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数
over(partition by deptno)按照部门分区
over(order by salary range between 50 preceding and 150 following)
每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
over(order by salary rows between 50 preceding and 150 following)
每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)
每行对应的数据窗口是从第一行到最后一行,等效:
over(order by salary range between unbounded preceding&n
相关文档:
一、选择题
1.当你执行以下查询语句:
SELECT empno,ename
from emp
WHERE empno =7782 OR empno =7876;
在WHERE语句中,以下哪个操作符可以取代OR?
A. IN
B. BETWEEN ……
C. LIKE
D. <=
E. >=
2. 哪个实现  ......
oracle 存储过程和函数学习笔记
1、创建过程的语法:
Code
create [or replace] procedure procedure_name
[(argument[{in|out|in out}] type,
argument[{in|out|in out}] type)]&n ......
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu, user_con ......
Oracle数据库是一种大型关系型的数据库,我们知道当使用一个数据库时,仅仅能够控制哪些人可以访问数据库,哪些人不能访问数据库是无法满足数据库访问控制的。DBA需要通过一种机制来限制用户可以做什么,不能做什么,这在Oracle中可以通过为用户设置权限来实现。权限就是用户可以执行某种操作的权利。而角色是为了方便DBA管 ......
create table emp2_log(
uname varchar2(20),
action varchar(10),
atime date
);
create or replace trigger trig
after insert or delete or update on emp2 for each row //绑在一张表上,before after 都可
以,before是 插数据之前,after是之后
begin
&nb ......