1、group by语句在oracle中没有排序功能,必须依靠order by才能实现按照预定结果的排序

2、group by 的cube扩展

 with test as
(
select 1 id,2 name from dual
)
select id,name from test group by cube(id,name); 输出结果为
id name
null null
1 null
null 2
1 2

由此不难看出group by cube的作用是把null引入做一个笛卡尔积,最终显示出来,在有些情况下用起来非常的方便,在某些情况下可以替代union all,极高的提升效率。其中在数据量比较多的情况下,全空列只出现一次

3、grouping()函数

grouping() 与cube一起使用,用来判断这个值是不是聚合产生的null值,如果是返回1,不是返回零

 with test as
(
select 1 id,2 name from dual
)
select id,name from test
group by cube(id,name)
having grouping(id)=1; 输出结果为
id name
null null
null 2 with test as
(
select 1 id,2 name from dual
)
select id,name from test
group by cube(id,name)
having grouping(id)=0; 输出结果为
id name
1 null
1 2

4、grouping_id()函数

grouping_id()在某种程度上与grouping()相似,不同的在于grouping()计算一个表达式返回0或1,而group_id()计算一个表达式,确定其参数中的哪一行被用来生成超聚合行,然后常见一个矢量,并将该值作为整型值返回

 with test as
(
select 1 id,2 name from dual
),
cuded as(
select
grouping_id(id,name) gid,
to_char(grouping(id)) id_1,
to_char(grouping(name)) name_1,
decode(grouping(id),1,' id 1') id_2,
decode(grouping(name),1,' name 2') name_2
from test
group by cube(id,name)
)
select
gid,id_1||name_1 dn,id_2,name_2
from
cuded; 结果为:
gid dn id_2 name_2
0 00
1 01 name 2
2 10 id 1
3 11 id 1 name 2
    

  

oracle group 语句探究(笔记)的更多相关文章

  1. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  2. 45 个非常有用的 Oracle 查询语句

    ​ 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...

  3. Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...

  4. Oracle Update 语句语法与性能分析 - 多表关联

    Oracle Update 语句语法与性能分析 - 多表关联   为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create ...

  5. oracle group by中cube和rollup字句的使用方法及区别

    oracle group by中rollup和cube的区别:  Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是ROLLUP(A, B, C)的话,先 ...

  6. 常用的Oracle数据库语句 (待更新完毕)

    一.常用的查询语句 1.1 常用查询 查表中有多少个字段 select count(*) from user_tab_columns where table_name=upper('表名') 或者 s ...

  7. 40多个非常有用的Oracle 查询语句

    给大家介绍是40多个非常有用的Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有Oracle 开发者都必备的技能,所以快快收藏吧! 日期 ...

  8. MS SQL到Oracle的数据迁移笔记

    MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...

  9. 45个非常有用的 Oracle 查询语句小结

    45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...

随机推荐

  1. body-content取值的意义

    body-content的值有下面4种: <xsd:enumeration value="tagdependent"/> <xsd:enumeration val ...

  2. 使用Flex4的PopUpManager的addPopUp() 方法弹出 removeChild异常的解决办法

    Flex4中,弹出窗口有两种: Alert.show("balabalabala-");   PopUpManager.addPopUp([要弹出的控件],[父控件],[是否模态] ...

  3. 使用JAR命令打EAR包

    恩,我又得了一个发布应用的活,常常使用JAR命令来打EAR包,所以下面记录一下,以免忘记! 前提条件如下: 1)我的WEB服务器是WebLogic Server (版本是: 10.3.6.0) 2)假 ...

  4. django中时区设置

    通过django中的models更新数据库的DateTimeField字段,发现有错误,于是更改了: TIME_ZONE = 'Asia/Shanghai' 结果,还是不正确,于是把: USE_TZ ...

  5. 学习练习 Oracle数据库小题

    Course(课程表) Score(成绩表) Teacher(教师表)

  6. noip2007 树网的核

    P1099 树网的核 112通过 221提交 题目提供者该用户不存在 标签动态规划树形结构2007NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 设T=(V, E, W) ...

  7. Oracle删除用户和表空间

    对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop user ×× cascade 说明: 删除了user,只是删除了该user下的schem ...

  8. android studio首次运行出错

    转载2015-10-24 16:28:15 标签:androidstudioandroidstudio无法启androidstudio1.4无法 Internal error. Please repo ...

  9. Wpf实现图片自动轮播自定义控件

    近来,公司项目需要,需要写一个自定义控件,然后就有下面的控件产生.样式没有定义好,基本功能已经实现.1.创建为自定义控件的XAML页面.下面为后台代码 using System; using Syst ...

  10. ubuntu 字体 android stuido 汉字 显示 方块

    Ubuntu 12.04 LTS 中安装 windows 字体   ubuntu 中的中文字体看着总觉的有点不爽,于是百度了下,这里记录下怎么在 ubuntu 12.04 中安装 windows 字体 ...