oracle高级查询1

分组查询

1.行转列函数wm_concat();
select deptno 部门号,wm_concat(ename) 部门中员工的姓名 from emp group by deptno
 部门号 部门中员工的姓名
--------- ----------------------
        10 CLARK,MILLER,KING
        20 SMITH,FORD,ADAMS,SCOTT,JONES
        30 ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD

2.oracle分组函数会自动过滤掉空值,如果想保留空值,需要加上nvl函数:nvl(comm,0),前一个值为空就返回后一个。

3.在select列表中所有未包含在组函数中的列都应该包含在group by子句中;包含在group by字句中的列不必包含在select列表中。
select deptno,avg(sal) from emp group by deptno;
select avg(sal) from emp group by deptno;

4.过滤分组使用having
having和where的区别:不能在where子句中使用组函数,可以在having中使用
在没有组函数的情况下,where和having通用,但由于SQL优化,应该尽量使用where.having先分组再过滤,where先过滤再分组.

5.a命令append追加,需要有两个以上的空格.

6.group by语句的增强 group by rollup(a,b)

等价于(group by a,b)+(group by a)+(group by null)
例如:select deptno,job,avg(sal) from emp group by rollup(deptno,job);
break on deptno skip 2相同的部门号的值只显示一次,不同的部门号跳过两行.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值