drop table aa_test;
create table aa_test(
id number,
name varchar2(100 byte),
pid number default 0
);
INSERT INTO aa_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO aa_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO aa_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO aa_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO aa_TEST(ID,NAME,PID) VALUES('5','121','2');
insert into aa_test(id,name,pid) values('6','six','4');
--子递归查询一般用于树形结构的应用(有点像自连接)
--root-->末梢
select aa_test.*,level from aa_test start with id=1
connect by prior id=pid
order by pid;
--末梢-->root
select * from aa_test
start with id=6
connect by prior pid=id;
--可通过level 关键字查询所在层次,prior获得前驱
select first_value(pid) over(order by level desc rows unbounded
preceding) as firstpid from aa_test
start with id=6
connect by prior pid=id
----------------------------------
delete from emp where ename='kevin';
select deptno,ename,sal
from emp
order by deptno;
--连续求和 sum(sal) over(order by ename)
--非连续 sum(sal) over() ==sum(sal) 求总
select deptno,ename,sal,sum(sal) over(partition by deptno order by ename) 连续求和,
sum(sal) over(order by ename) 总和,
sum(sal) over(order by deptno desc,sal desc) "44总和",
100*round(sal/sum(sal) over(),4) "份额(%)"
from emp;
sum(sal) over(partition by deptno order by ename) --按部门连续求和
sum(sal) over(partition by deptno) --按部门连续求和
sum(sal) over(order by deptno,ename) --不按部门??
sum(sal) over()
--------------------
create table xman
(
name varchar2(20),
city varchar2(20),
money number(6)
);
-------------
insert into xman values('zhang3','HONGKONG',100);
insert into xman values('zhang3','MACAO',200);
insert into xman values('zhang3','BEIJING',300);
insert into xman values('li4','HONGKONG',300);
insert into xman values('li4','MACAO',100);
insert into xman values('li4','BEIJING',400);
insert into xman values('wang5','HONGKONG',200);
insert into xman values('wang5','MACAO',700);
--汇总(双向)
select name,city,sum(money) as money from xman
group by cube(name,city);
--汇总(单项)
select nvl(name,'总计'),nvl(city,'小计'),sum(money) as money from xman
group by rollup(name,city);
select * from xman;
--先看如下的一基础查询,实现行列转换:
SELECT nvl(name, 'zzYSUM') name,
SUM(decode(city, 'HONGKONG', money, 0)) hongkong, --横向汇总数据
SUM(decode(city, 'MACAO', money, 0)) macao,
SUM(decode(city, 'BEIJING', money, 0)) beijing,
SUM(decode(city, 'ZongGong', money, 0)) xsum
FROM
(SELECT name, nvl(city, 'ZongGong') city, SUM(money) money --纵向汇总
FROM xman
GROUP BY rollup(name, city))
GROUP BY name order by name;
--再看下面实现横向,纵向统计:
WITH x AS
(SELECT nvl(name, 'zzYSUM') name,
SUM(decode(city, 'HONGKONG', money, 0)) hongkong,
SUM(decode(city, 'MACAO', money, 0)) macao,
SUM(decode(city, 'BEIJING', money, 0)) beijing,
SUM(decode(city, 'ZongGong', money, 0)) xsum
FROM
(SELECT name, nvl(city, 'ZongGong') city, SUM(money) money
FROM xman
GROUP BY rollup(name, city))
GROUP BY name order by name)
SELECT *
FROM x WHERE name <> 'zzYSUM'
UNION
SELECT 'zzYSUM',
SUM(hongkong) hongkong,
SUM(macao) macao,
SUM(beijing) beijing,
SUM(xsum) sum
FROM x
WHERE name <> 'zzYSUM';
分享到:
相关推荐
自动汇总函数 自动汇总函数包括 Rollup 和 Cube 两个函数。 * Rollup 函数:用于对数据进行分组和汇总,生成一个总的汇总结果。例如,使用 Rollup 函数可以对数据进行分组,并生成一个总的汇总结果。 * Cube 函数...
6. 聚合函数:如COUNT(计数)、SUM(求和)、AVG(平均值)、MAX/MIN(最大值/最小值)等,用于汇总数据。 7. 位操作函数:如BITAND(按位与)、BITOR(按位或)、BITNOT(按位非)等,处理二进制数据。 8. 非...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能在很大程度上得益于其丰富的内置函数。这里,我们将深入探讨在"Oracle函数大全"压缩包中的九个Word文档所涵盖的知识点。 首先,"ORACLE函数大全.doc...
报表函数主要涉及对数据的汇总和聚合,如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等。这些函数通常用于生成报表,但也可以结合分析函数在特定窗口内进行更复杂的计算。 ### 结论 Oracle的分析函数、窗口...
这些函数常在SQL查询的GROUP BY语句中使用,进行数据汇总。 6. **分析函数**:分析函数在处理大量数据时非常有用,如`RANK`、`DENSE_RANK`和`ROW_NUMBER`用于生成行序号,`LEAD`和`LAG`可以访问当前行的前一行或后...
本资源“oracle数据仓库分析函数汇总”聚焦于Oracle数据库中的分析函数,尤其是与`OVER()`子句相关的应用,这是一系列功能强大的SQL工具,用于处理窗口或分组数据。 首先,`OVER()`子句允许在单个SQL查询中定义一个...
Oracle数据库是世界上最广泛使用的数据库系统之一,其内置函数是实现高效数据处理的关键工具。这篇文档“oracle内置函数大全”提供了一个全面的参考,适合数据库管理员、开发人员以及初学者使用。下面将详细介绍...
Oracle数据库系统提供了丰富的内置函数,方便用户在处理数据时进行各种操作。以下是对标题和描述中提到的一些常用Oracle函数的详细说明: 字符函数: 1. `UPPER(str)`:将字符串`str`中的所有小写字母转换为大写...
Oracle分析函数是数据库管理系统Oracle中的一种高级SQL特性,它允许用户在单个查询中对一组行进行计算,而无需使用子查询或自连接。这些函数极大地增强了数据分析和报告的能力,提高了查询性能。以下是对Oracle分析...
### Oracle 最全函数大全 #### 一、总体介绍 Oracle 数据库提供了丰富的内置函数来处理各种数据需求。这些函数可以大致分为以下几类:分析函数、聚合函数、转换函数、日期型函数、字符型函数、数值型函数以及其他...
根据提供的文件信息,我们可以深入探讨Oracle分析函数的相关知识点,特别是`SUM()`函数配合`OVER`...通过这些示例,可以看出Oracle分析函数的强大功能,特别是在处理大量数据时,可以轻松地进行复杂的数据分析和汇总。
Oracle 常用函数汇总 Oracle 是一个功能强大的关系数据库管理系统,提供了许多实用的函数来进行数据处理和分析。下面是 Oracle 中的一些常用函数,包括字符串处理、数字处理、日期处理等。 ASCII 函数 ASCII 函数...
在描述中提到的场景中,有几种不同的方法可以实现数据统计,包括通过程序处理、使用临时表和包、标准SQL的UNION以及Oracle特有的分析函数。每种方法都有其优缺点。例如,程序处理方法与数据库无关,但增加了开发工作...
1. **自动汇总函数:ROLLUP 和 CUBE** - **ROLLUP** 函数用于生成层次化的汇总数据。它会根据提供的列进行逐级汇总,从最细粒度到最粗粒度。例如,如果有`BILL_MONTH`和`AREA_CODE`两列,ROLLUP会分别计算月度、...
在这个例子中,DECODE函数被用来将学生的ID转换为年级名称,并且通过`SUM`和`DECODE`组合使用,实现按科目汇总学生成绩。`DECODE(kname, 'yu', score, 0)`会检查`kname`字段是否为'yu'(代表语文),如果是,则返回`...
本篇文章将详细阐述Oracle分组函数的概念、功能以及常用分组函数的使用方法。 一、分组函数概述 分组函数主要作用于一组数据上,而不是单个记录,它们用于对数据进行汇总,如计算总和、平均值、最大值、最小值等。...
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的功能之一在于丰富的内置函数。这些函数极大地提高了数据处理和查询的效率。下面将详细讲解在"oracle函数分类.rar"压缩包中的主要函数类别及其应用...
Oracle数据库系统提供了丰富的函数库,帮助用户在处理数据时进行各种复杂的操作。以下是一些常用的Oracle函数,包括SQL组函数和一些杂项函数的详细解释。 **SQL Group Functions** 1. **AVG(distinct or all num)*...
### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对查询结果进行复杂的分析处理,而无需多次查询数据库或编写复杂的程序逻辑。这大大简化了开发人员的工作,尤其是在处理大数据...