oracle分析函数

Oracle分析函数FIRST_VALUE、LAST_VALUE

匿名 (未验证) 提交于 2019-12-02 23:52:01
FIRST_VALUE、LAST_VALUE分析函数可以按照特定分组和排序去除组内首尾值,语法 FIRST_VALUE { (expr) [ {RESPECT | IGNORE} NULLS ] | (expr [ {RESPECT | IGNORE} NULLS ]) } OVER (analytic_clause) 测试下 10:48:07 SCOTT@study> SELECT EMPNO, 10:48:15 2 DEPTNO, 10:48:15 3 SAL, 10:48:15 4 FIRST_VALUE(SAL) IGNORE NULLS OVER(PARTITION BY DEPTNO ORDER BY SAL) AS LOWEST_IN_DEPT, 10:48:15 5 FIRST_VALUE(SAL) IGNORE NULLS OVER(PARTITION BY DEPTNO ORDER BY SAL ROWS 1 PRECEDING) AS PRECEDING_IN_DEPT, 10:48:15 6 LAST_VALUE(SAL) IGNORE NULLS OVER(PARTITION BY DEPTNO ORDER BY SAL) AS HIGHEST_IN_DEPT, 10:48:15 7 LAST_VALUE(SAL) IGNORE NULLS OVER

Oracle学习笔记:窗口函数

心已入冬 提交于 2019-12-01 10:06:34
目录 1.测试数据 2.聚合函数+over() 3.partition by子句 4.order by子句 5.序列函数 5.1 分析函数之 ntile 5.2 分析函数之 row_number 5.3 分析函数之 lag、lead 5.4 分析函数之 first_value、last_value SQL中的聚合函数,顾名思义是聚集合并的意思,是对某个范围内的数值进行聚合,聚合后的结果是一个值或是各个类别对应的值。直接聚合得到的结果是所有数据合并,分组聚合(group by)得到的结果是分组合并。 这种聚合函数得到的数据行数是小于基础数据行数的,但是我们经常会有这样的需求,就是既希望看基础数据同时也希望查看聚合后的数据,这个时候聚合函数就满足不了我们了,窗口函数就派上用场了。窗口函数就是既可以显示原始基础数据也可以显示聚合数据。 1.测试数据 学习当然不能凭空想象,需要大量的实践来提高学习效果。 先编排测试数据。 -- 创建测试表 create table temp_cwh_window ( shopname varchar(10), sales number, date2 date ); -- 插入数据 insert into temp_cwh_window values('淘宝','50',to_date('20191013','yyyymmdd')); insert into

Oracle分析函数

懵懂的女人 提交于 2019-11-30 03:25:16
分析函数 OLAP的系统(即Online Aanalyse Process)一般用于系统决策使用。通常和数据仓库、数据分析、数据挖掘等概念联系在一起。这些系统的特点是数据量大,对实时响应的要求不高或者根本不关注这方面的要求,以查询、统计操作为主。 我们来看看下面的几个典型例子: ①查找上一年度各个销售区域排名前10的员工 ②按区域查找上一年度订单总额占区域订单总额20%以上的客户 ③查找上一年度销售最差的部门所在的区域 ④查找上一年度销售最好和最差的产品 我们看看上面的几个例子就可以感觉到这几个查询和我们日常遇到的查询有些不同,具体有: ①需要对同样的数据进行不同级别的聚合操作 ②需要在表内将多条数据和同一条数据进行多次的比较 ③需要在排序完的结果集上进行额外的过滤操作 分析函数和聚合函数的不同之处是什么? 普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值。 分析函数的形式 分析函数带有一个 开窗函数over(),包含三个分析子句:分组(partition by), 排序(order by), 窗口(rows) , 他们的使用形式如下: function_name(<argument>,<argument>...) over(<partition_Clause><order by_Clause

oracle 分析函数和性能

半腔热情 提交于 2019-11-28 07:23:43
分析函数语法 sum()over (partition by aa order by bb rows between unbounded preceding and unboundedfollowing ) partition by 为分组 order by 和order by 之后 为开窗函数 控制数据范围 控制数据范围的语句 unbounded preceding 第一行,可以理解为当前行的最上面一行,就是第一行 1 preceding 当前行的上一行 unbouned following 最后一行,可以理解为当前行的最后一行,就是最后一行 1 following 当前行的下一行 current row 当前行 测试 select name, shangjin, zhenying, sum(shangjin) over(partition by zhenying order by name ROWS between unbounded PRECEDING AND unbounded FOLLOWING) from xzhdx; 求每个分组中第一行到最后一行的和,就是该分组的和。 select name, shangjin, zhenying, sum(shangjin) over(partition by zhenying order by name ROWS between