Oracle的group by分组,子句增强

开篇还是想吐槽一下这个Oracle的group by分组,没有MySQL那么好用,可能是MySQL用习惯了 :- (

表以及数据:

create table employees
(
  employee_id number(8) not null,         --员工id
  manager_id number(6),                   --经理id
  salary number(8,2),                     --工资
  employees_name varchar2(25) not null,   --员工名字
  entry_date date not null                --入职时间
);


insert into employees values (1000,100,10000,'jack1',sysdate -365);
insert into employees values (1001,101,10000,'jack2',sysdate -200);
insert into employees values (1002,101,8000,'jack3',sysdate -100);
insert into employees values (1003,102,8500,'jack4',sysdate -150);
insert into employees values (1004,102,8000,'jack5',sysdate -100);
insert into employees values (1005,102,8000,'jack6',sysdate -100);
insert into employees values (1006,100,8000,'jack7',sysdate -100);
insert into employees values (100,null,20000,'jack8',sysdate -800);

1.普通分组

select employees_name, manager_id ,sum(salary) from employees where manager_id = 100 group by employees_name,manager_id;

在这里插入图片描述

2.rollup分组(它会根据某个列名再进行汇总统计)

select employees_name, manager_id ,sum(salary) from employees where manager_id = 100
 group by rollup(employees_name,manager_id);

在这里插入图片描述

3.cube分组

select employees_name, manager_id ,sum(salary) from employees where manager_id = 100
 group by cube(employees_name,manager_id);

在这里插入图片描述

4.grouping查询是否分组,显示 0 表示经过分组,显示 1 表示未经过分组

select employees_name, manager_id ,sum(salary),grouping(employees_name) gp_e_n,grouping(manager_id) gp_m_i 
from employees where manager_id = 100 group by cube(employees_name,manager_id);

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值