- 浏览: 92273 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (139)
- oracle基础 (27)
- oracle sql编程及优化 (14)
- ELK (4)
- java (11)
- java设计模式 (0)
- 互联网知识 (6)
- 安装MongoDB (1)
- MongoDB (0)
- spark (1)
- scala (1)
- spring boot (3)
- spring cloud (8)
- redis (6)
- virtualbox (3)
- docker (7)
- rabbitmq (0)
- rocketmq (2)
- k8s (8)
- ubuntu (11)
- centos (3)
- mysql (4)
- nginx (7)
- tomcat (5)
- postman (1)
- other (10)
最新评论
-
lihao312:
insert all功能好强大哦 之前都没有用到过
oracle 多表插入 insert all 用法(即列转行)
Lag 和Lead 函数可以在一次查询中取出同一字段的前N行 的数据和后N行 的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。
语法:Lead (expression, offset, default) over(partition-clause order-by-clause)
参数说明:
offset 偏移,表示查询其后第n条记录, 如果不提供这个参数,就是默认为1;
default 默认值,如果没有找到。如果没有设置,且找不到,那么就返回Null;
query_partition_clause 分区语句,对结果集合分区的语句,是可选的,如果没有就是所有的一个分区;
Order_by_clause 排序语句 必须需要 ,
如果没有order by 子句,就不是“连续”的。
建表语句如下:
create table SMALL_CUSTOMERS(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 10); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 20); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 30); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 5); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 10); insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 1);
Lead具体用法:
select t.customer_id, t.sum_orders, lead(t.sum_orders) over(partition by t.customer_id order by t.sum_orders) from small_customers t;
用Lead实现行转列:
第一步:
select customer_id, sum_orders, lead(t.sum_orders, 1) over(partition by customer_id order by t.sum_orders) sum_orders2, lead(t.sum_orders, 2) over(partition by customer_id order by t.sum_orders) sum_orders3, rownum rn from small_customers t order by rn;
第二步,过滤数据:
select * from (select customer_id, sum_orders, lead(t.sum_orders, 1) over(partition by customer_id order by t.sum_orders) sum_orders2, lead(t.sum_orders, 2) over(partition by customer_id order by t.sum_orders) sum_orders3, rownum rn from small_customers t order by t.sum_orders) where mod(rn, 5) = 1;
第三步,组装数据:
select customer_id, sum_orders || ',' || sum_orders2 || ',' || sum_orders3 from (select customer_id, sum_orders, lead(t.sum_orders, 1) over(partition by customer_id order by t.sum_orders) sum_orders2, lead(t.sum_orders, 2) over(partition by customer_id order by t.sum_orders) sum_orders3, rownum rn from small_customers t order by t.sum_orders) where mod(rn, 5) = 1;
Lag与Lead语法相同,区别是Lag表示查询其前第n条记录
select t.customer_id, t.sum_orders, lag(t.sum_orders) over(partition by t.customer_id order by t.sum_orders) from small_customers t;
发表评论
文章已被作者锁定,不允许评论。
-
oracle rman
2014-06-30 15:14 4491. 检查数据库模式: sqlplus /nolog ... -
Oracle Scheduler Chain 的用法
2014-06-15 22:10 0Oracle CHAIN,也就是链,是将一串需要完成的作业连 ... -
oracle 热备脚本
2014-06-08 22:59 0oracle 热备脚本 -
表空间传输
2014-05-25 23:27 2042http://www.linuxidc.com/Linux ... -
sqlplus 基本命令
2014-05-21 18:01 577SQL> show all --查看所有68个系统变 ... -
undo 文件丢失的数据库恢复
2014-05-19 14:55 11621.连接数据库 sqlplus /nolog con ... -
oracle日志文件损坏时,用隐含参数启动:_allow_resetlogs_corruption
2014-05-17 10:06 1474Oracle隐含参数:_allow_resetlogs_c ... -
Oracle TYPE OBJECT 用法
2012-11-05 15:46 0Oracle TYPE OBJECT 用法 -
如何降低Oracle表的高水位
2012-11-05 15:39 0如何降低Oracle表的高水位 -
Oracle外部表
2012-11-06 17:10 588转载:Oracle外部表4 Oracle外 ... -
ORACLE删除重复记录方法
2012-11-05 15:32 0转载:ORACLE删除重复记录方法 -
oracle table()函数用法
2012-11-05 15:31 0转载:oracle table()函数用法 -
关于Oracle建物化视图的总结
2012-11-05 15:31 0转载:关于Oracle建物化视图的总结 -
全面学习ORACLE Scheduler特性
2012-11-05 15:58 592转载:全面学习ORACLE Scheduler特性 -
WITH子句与未公开HINT MATERIALIZE联合使用, 取代临时表
2012-11-05 15:11 0转载:WITH子句与未公开HINT MATERIALIZE联 ... -
如何找回Oracle数据库初始化密码
2012-11-05 15:03 0转载:如何找回Oracle数据库初始化密码 -
ORACLE EXP和IMP浅谈
2012-11-05 15:03 0转载:ORACLE EXP和IMP浅谈 oracl ... -
Oracle SQL Loader
2012-11-05 14:55 0引用:Oracle SQL Loader -
oracle flashback介绍
2012-11-05 16:01 697引用:Flashback Table之RECYCLEBIN ... -
oracle v$视图
2012-10-26 14:16 0v$locked_object 查看锁定的会话 ...
相关推荐
通过本文的介绍,我们可以了解到Oracle分析函数的强大之处,尤其是在处理复杂的分析需求时。这些函数不仅简化了SQL查询,而且提高了数据处理的效率。理解并熟练掌握这些函数对于Oracle开发者来说至关重要。在实际...
其中,Oracle的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自连接。这篇文档将深入探讨Oracle中的分析函数,帮助你更好地理解和利用这一功能。 一、什么是...
Oracle分析函数是数据库管理系统Oracle中的一个强大特性,它允许用户在SQL查询中执行复杂的分析操作。分析函数在处理报表和数据迁移任务时尤其有用,因为它们可以基于分组计算聚合值,并为每个分组返回多行,而不...
Oracle 分析函数是一种强大的SQL工具,它允许你在处理数据时执行复杂的分析操作,而不像聚合...参考书籍如Tom Kyte的《Expert One-on-One》和Oracle 9i SQL Reference等,都是深入学习和理解Oracle分析函数的宝贵资源。
Oracle 分析函数是 Oracle 数据库中的一种强大功能,能够帮助用户快速进行数据分析和处理。在本文中,我们将对 Oracle 分析函数进行详细的介绍,并对其各个函数进行解释。 一、总体介绍 Oracle 分析函数的语法...
总的来说,Oracle分析函数提供了一套强大的工具,用于处理复杂的数据分析任务,使数据库查询更加灵活和高效。通过熟练掌握这些函数,数据库管理员和开发人员能够更有效地从数据中提取有价值的信息,支持业务决策和...
除了这些,Oracle分析函数还包括RANK、DENSE_RANK、ROW_NUMBER等排名函数,LEAD和LAG用于获取当前行之前或之后的值,FIRST_VALUE和LAST_VALUE则返回窗口内的第一个或最后一个值,以及NTILE用于将数据分桶等。...
Oracle分析函数是数据库管理系统Oracle中的一种高级特性,用于处理和分析数据集,提供了一种高效的方式来执行聚合操作,而无需多次查询数据库。分析函数能够直接在单次查询中完成复杂的数据计算,包括排序、分组、...
Oracle的分析函数还包括`ROW_NUMBER`, `RANK`, `DENSE_RANK`用于行号分配,`LEAD`, `LAG`用于获取前后行数据,`FIRST_VALUE`, `LAST_VALUE`获取窗口范围内的第一个或最后一个值,以及`NTILE`进行分桶等。这些函数在...
Oracle分析函数是数据库管理系统Oracle中一组强大的工具,用于处理集合数据,特别是在复杂的报表和数据分析场景中。它们允许用户在单个SQL查询中执行聚合操作,同时保持行的原始顺序,这是传统的GROUP BY函数无法...
下面我们将对 Oracle 分析函数进行详细的介绍和分析。 自动汇总函数 自动汇总函数包括 Rollup 和 Cube 两个函数。 * Rollup 函数:用于对数据进行分组和汇总,生成一个总的汇总结果。例如,使用 Rollup 函数可以...
Oracle 分析函数是数据库查询中的强大工具,它们允许在单个SQL语句中对结果集进行复杂的计算和分组操作,极大地简化了数据分析的过程。在Oracle 8i版本之后引入,分析函数为处理大量数据提供了高效的方法,避免了...
Oracle分析函数是数据库管理系统Oracle中的一个重要特性,自8.1.6版本开始引入,它们用于执行基于组的聚合计算,并且为每个组返回多行结果,而不仅仅是单行。这使得分析函数在数据分析和报表生成方面非常有用,能够...
Oracle分析函数是数据库查询中不可或缺的一部分,尤其对于数据分析师和数据库管理员来说,掌握这些函数能极大地提高数据处理的效率和精度。本篇文章将从以下几个方面对Oracle分析函数进行详细解读: 一、分析函数...
Oracle 分析函数、窗口函数和报表函数是数据库查询和数据分析中的关键工具,尤其在复杂的OLAP(在线分析处理)系统中发挥着重要作用。在Oracle数据库中,这些功能提供了对大量数据进行高效处理的能力,帮助用户生成...
Oracle分析函数是OLAP(在线分析处理)和数据挖掘等领域中不可或缺的工具。 Oracle分析函数简介部分提到,分析函数在OLTP(在线事务处理)和OLAP系统中的应用场景不同。OLTP系统处理实时事务,业务逻辑复杂,而OLAP...
Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理复杂的报表统计和数据分析。它们在OLAP(在线分析处理)系统中尤其重要,因为这类系统往往需要处理大量数据并进行复杂的聚合计算,而分析...
Oracle分析函数是数据库管理系统Oracle中的一种高级SQL特性,自8.1.6版本引入,极大地扩展了SQL在数据处理和分析上的能力。分析函数的主要作用是进行聚合操作,但与传统的聚合函数(如SUM, COUNT, AVG等)不同,它们...