Oracle学习————【多行函数】

1 什么叫多行函数?

在这里插入图片描述

1.1 常用的多行函数

在这里插入图片描述
null值在组函数的使用中会自动滤空。我们也可以嵌套滤空函数来屏蔽他的滤空功能。

2 分组数据:group by

在Oracle中使用group by语句必须要注意两点!

  1. 在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中。
    在这里插入图片描述
  2. 包含在GROUP BY子句中的列不必包含在SELECT列表中。
    在这里插入图片描述
  3. 多个列的分组:先按照第一个列分组,如果相同,再按第二个列分组,以此类推。

2.1 过滤分组数据:HAVING子句

在这里插入图片描述
下面是使用实例:
在这里插入图片描述

2.1.1 where和having的区别

  1. 不能在WHERE子句后使用组函数。
  2. 可以在HAVING子句中使用组函数。
  • 当WHERE和HAVING都能够使用的场景下,尽量使用where。原理是当使用where时是先过滤在group分组,而使用having时是先分组后过滤。所以在处理大批量数据是where的使用会较为优化。

2.2 group by语句的增强

当前有个需求:按照部门统计各部门不同工种的工资情况,要求按如下格式输出。(做报表)
在这里插入图片描述
SQL如下:
在这里插入图片描述
rollup的使用:
group by rollup(a,b)
=
group by a,b
+
group by a
+
没有group by

但当我们在命令行中敲select deptno,job,sum(sal) from emp group by rollup(deptno,job);执行时,显示结构却并不像报表形式展示。实际如下。
在这里插入图片描述
我们可以看见DEPTNO字段显示的还是有冗余,那么我们该怎么显示成报表格式的结果展示呢?
在这里插入图片描述
如果要取消以上设置则执行break on null就好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值