oracle高级分组】的更多相关文章

oracle 高级分组 博客分类: 数据库基础 oraclesql  10.高级分组 本章目标: 对于增强的group by需要掌握: 1.使用rollup(也就是roll up累计的意思)操作产生subtotal(小计)的值. 2.使用cube操作产生cross-tabulation(列联交叉表)的值. 3.使用grouping函数标识通过rollup和cube建立的行的值. 4.使用grouping sets产生一个single result set(结果集). 5.使用grouping_i…
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用法,这些函数可以理解为GroupBy分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但是要比 多个union all的效率要高. 其实这些函数在时间的程序开发中应用的并不多,至少在我工作的多年时间中没用过几次,因为现在的各种开发工具/平台都自带了这些高级分组统计功能,使用的方…
基本group by用法 create table test_table(a varchar(20),b varchar(20),c varchar(20)) insert into test_tablevalues(1,'a','甲')insert into test_tablevalues(1,'a','甲')insert into test_tablevalues(1,'a','甲')insert into test_tablevalues(1,'a','甲')insert into te…
高级排序函数: [ ROW_NUMBER()| RANK() | DENSE_RANK ] OVER (partition by xx order by xx) 1.row_number() 连续且递增的数字 1 2 3 4   row_number() over (partition by xx order by xx )    --学生表中按照所在专业分组,同专业内按成绩倒序排序,成绩相同则按学号正序排序,并给予组内等级select row_number() over(partition b…
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ======================================================================= scott用户的四张表(emp,dept,bonus,salgrade) 没有这四张表的可参考http://blog.csdn.net/love_legain/article/details/54311040进行创建 -----------------------…
原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278314/article/details/77335103 ORACLE常用SQL 工作两年了,一直使用的oracle,最近经常使用不常用的sql语句,索性就自己整理一下,发出来 供大家参考,后续会不断添加.整理,本文章不做详细的功能解释,主要集合描述目前接触过的一些函数 复制表结构和数据 CREAT…
原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278314/article/details/77335103 ORACLE常用SQL 工作两年了,一直使用的oracle,最近经常使用不常用的sql语句,索性就自己整理一下,发出来 供大家参考,后续会不断添加.整理,本文章不做详细的功能解释,主要集合描述目前接触过的一些函数 复制表结构和数据 CREAT…
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和SQL语句阐述下oracle数据库中用于分组排序函数的用法. a.row_number() over() row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序…
Oracle 9i以后,扩展了group by 的功能,能够满足大部分多维数据的分析统计功能,主要表现: 1. rollup,cube,grouping sets 扩展group by字句提供了丰富的多维分组统计功能: 2. 3个扩展分组函数:grouping,grouping_id,group_id提供扩展group by的辅助功能:提供区别结果行属于哪个分组级别,区分NULL值,建立有意义的报表,对汇总结果排序,过滤结果行等: 3.对扩展group by允许按重复列分组,组合列分组,连接分组…
ORACLE字符串连接分组串聚函数 wmsys.wm_concat SQL代码: select grp, wmsys.wm_concat(str) grp, 'a1' str from dual union grp, 'a2' str from dual union grp, 'b1' str from dual union grp, 'b2' str from dual union grp, 'b3' str from dual) t group by grp 执行效果: 原始数据 分组聚合后…
注释:为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的 oracel的高级用法:rank()/dense_rank() over(partition by ...order by ...) 现在客户有这样一个需求,查询每个部门工资最高的雇员的信息 方法一:常用方法 select e.ename, e.job, e.sal, e.deptno from scott.emp e, (select e.deptno, max(e.sal) sal from scott.e…
Oracle SQL 一些函数用法 以下sql环境都是在 Oracle 11g/scott完成 Group by 与GROUP BY一起使用的关建字 GROUPING,GROUP SET,ROLLUP,CUBE结合这些特性的函数可以实现SQL的明细+分组统计 GROUPING GROUPING 记录是对哪个字段进行统计,其值只能是 0 & 1 Group(column) =0 表示此字段参与了分组统计 =1表示字段未参与分组统计 select deptno,job,sum(sal),groupi…
标题说是高级篇,其实也就是相对于基础篇来说的,也不是很深奥,自己平时工作中也都会用到,这里回忆的并不是特别冷门的知识,不要掉以轻心,以为“高级”就觉得工作中不会用到了. 一.select into 和 insert into select 两种表复制语句 create table <new table> as select * from <exists table>,要求目标表不存在. insert into table2(f1,f2,...) select v1,v2,....…
http://www.cnblogs.com/chen1388/archive/2010/07/06/1771919.html decode函数: decode(aa, 1, 'xs', 2, 'ps', 'ms') 相当于 (case aa when 1 then 'xs' when 2 then 'ps' else 'ms' end) http://www.cnblogs.com/chen1388/archive/2010/07/06/1771930.html trunc函数,截断函数 fo…
一.SQL函数 1.分类:单行函数(日期.数值.转换.字符等),多行函数,也称为分组函数(max.min.avg.sum.row_number.rank等). 2.数值函数 abs(n):求数字n的绝对值 ceil(n):返回大于等于数字n的最小整数 floor(n):返回小于等于数字n的最大整数 round(n,[m]):执行四舍五入运算.如果省略m或为0,则四舍五入至整数位,如果m是负数,则四舍五入到小数点前m位,如果m是正数,则四舍五入至小数点后m位. trunc(n,[m]):截取数字.…
回顾 多表关联查询的方式 内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx; Select * from a inner join b on a.xxx=b.xxxx inner join c on a.xxxx=c.xxxx 外连接 左外连接 以左表为驱动表,根据AB表关联的条件进行过滤查询,保留满足条件的数据,以及左边表的所有记录显示 Select * from a left join b on a.xxx=…
场景 01 (IN 语句 排序 decode() 函数): 1,我们在查询中会经常使用这样的用法, select * from table_name t where t.id in (1, 3, 7, 9),这是一条查询表中 id 为 1, 3, 7, 9 的数据现在我们加上一个需求, 要求查出来的数据的顺序和 括号内 id 的 顺序一致,有人会说直接 order by t.id 啊,多简单,那假设顺序是乱的呢?又假如 id 不是数字,而是字符串呢? 如  select * from table…
在进行多列分组统计时,如果直接使用GROUP BY子句指定分组列,则只能生成基于所有分组列的统计结果.如果在GROUP BY子句中使用ROLLUP语句或CUBE语句,除了生成基于所有指定列的分组统计外,还可以生成基于指定列不同子集的统计结果.使用ROLLUP选项,除了生成基于所有指定列的分组统计外,还对指定的分组列从左开始的每个子集进行统计.例如,GROUP BY ROLLUP(A,B,C)形成的统计包括以下内容.❑GROUP BY():不基于任何列的整个查询结果的统计.❑GROUP BY A:…
方法一 select t1.a,t1.b,t1.c from test t1 inner join (seelct a,max(b) as b from test group by a) t2 on t1.a=t2.a and t1.b=t2.b 方法二 select * from (select t.*, row_number() over(partition by 分组字段 order by 排序字段 desc ) rnfrom tablename t )where rn=1 方法三 (不一…
分组group by写法 select 字段名 from 表名 group by 字段名 查询这个字段名里的种类分组后可以加聚合函数select 字段名,聚合函数 from 表名 group by 字段名 查询分组后每个的值加条件having 条件语句,不能使用别名 写在group by 字段名 后面 模糊查询 like仅适用于字符串like '字符串+通配符'not like '字符串+通配符' 通配符 % _%代表任意数量字符,用于字符数量任意的模糊查询'字符串%'是开头规定了后面模糊查询'…
cube统计包含了rollup的统计结果,而且还有其他组合分组结果(小计),CUBE(n列),那么分组种类有: cube分组就是先进行合计(一个不取),然后小计(到),最后取标准分组. 与rollup不同,CUBE计算结果和列的顺序无关,如果列顺序不同,默认的结果排序则不同. SQL> select a.dname,b.job,sum(b.sal) sumsal from scott.dept a,scott.emp b where a.deptno=b.deptno group by cube…
一 数值函数 数值 abs,ceil,floor,round,trunc字符串 instr,substr SQL>SELECT 'ABS':'|| ABS(-12.3) FROM DUAL; 运行结果: ABS:12.3 SQL>SELECT 'CEIL'||CELI(5.3) FROM DUAL; SQL>SELECT 'CEIL'||CELI(-5.3) FROM DUAL; SQL>SELECT 'CEIL'||CELI(5) FROM DUAL; 运行结果: CEIL:6…
--1 数据环境准备 scott 用户下面的emp,dept表 --2 要求 :求平均工资最高的部门编号,部门名称,部门平均工资 select d.deptno,d.dname,e.salfrom(select avg(sal) sal,deptnofrom emp egroup by deptnohaving avg(sal) = (select max(avg(sal)) from emp group by deptno))eleft join dept don e.deptno=d.dep…
分组函数: 六个常用的分组函数: AVG,SUM,MIN,MAX,COUNT,WM_CONCAT: 行转列 PS:分组函数默认会自动过滤控制,可以使用NVL函数使分组函数无法忽略空值: 未使用NVL函数: select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三 from emp; --若有空记录,第一个结果和二三结果的不同 使用NVL函数: select )) 二 from emp; 分组函数的语法格式 : PS:未包含在分…
注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_rank() over(partition by ...order by ...) 现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句: select e.ename, e.job, e.sal, e.deptno from scott.emp e, (select e.deptno, max(e.sal) sal…
一,什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值 二,分组函数类型 Avg ,count,max,min,stddev(标准方差),sum. 函数名称 函数描述 Count 返回找到的记录数 Min 返回一个数字列或计算列的最小值 Max 返回一个数字列或计算列的最大值 Sum 返回一个数字列或计算列总和 avg 返回一个数字列或计算列的平均值 三,分组函数的语法 SELECT   [column,] group_function(column), ... FROM      …
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. Oracle中的select语句可以用start with ... connect by prior ...子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from where <过滤条件,用于对返回的所有记录进行过滤>start with <根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树>connect by [prior…
整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:INSERT INTO EXAM VALUES ('赵柳', '数学', '71');INSERT INTO EXAM VALUES ('张三', '数学', '81');INSERT INTO EXAM VALUES ('李四', '数学', '75');INSERT INTO EXAM VALUES…
路飞:" 把原来CSDN的博客转移到博客园咯!" 前段时间,自己负责的任务中刚好涉及到了组织关系的业务需求,自己用了oracle递归查询.下面简单来举个例子.在工作中我们经常会遇到有一定组织关系层次的关系.比如某个省下有多少市,每个市下又有多个区.再或者公司组织部门相互的隶属关系.这时我们就可能会用到 start with connect by prior 递归查询了 用法举例 1. 基本sql语法: select  ...   from  + 表   start with      …
1.pl/sql基本语句 DECLARE BEGIN END; / 循环语句 DECLARE I  NUMBER(2):=1; BEGIN WHILE I<100 LOOP I:=I+1; END LOOP; END; / DECLARE I  NUMBER(2):=1; BEGIN LOOP EXIT  WHEN  I<100; I:=I+1; END LOOP; END; / 判断语句 DECLARE I NUMBER(2):=1; BEGIN IF  I>2 THEN .... E…