达梦cube和rollup函数使用

在使用前需要安装达梦数据库,并创建示例库DMHR

● ROLLUP ●

比如获取公司各城市每个部门员工人数分布和薪资分布情况,使用group by rollup的sql样例参考如下:

从结果集中可以看出group by rollup聚合了城市和部门组合,城市组合,所有组合三种情况。输出结果展示如下:

SELECT
        C.CITY_NAME                                                 ,
        DEPT.DEPARTMENT_NAME                                        ,
        COUNT(                       *) TOAL_PERSONNUM              ,
        ROUND((RATIO_TO_REPORT(COUNT(*))OVER())*100, 2) PERSON_RATIO,
        SUM(EMP.SALARY) TOTAL_SALARY                                ,
        ROUND((RATIO_TO_REPORT(SUM(EMP.SALARY))OVER())*100, 2) SAL_RATIO
FROM
        DMHR.EMPLOYEE EMP   ,
        DMHR.DEPARTMENT DEPT,
        DMHR.LOCATION L     ,
        DMHR.CITY C
WHERE
        EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID(+)
    AND DEPT.LOCATION_ID  = L.LOCATION_ID(+)
    AND L.CITY_ID         = C.CITY_ID(+)
GROUP BY
        ROLLUP (C.CITY_NAME, DEPT.DEPARTMENT_NAME);

结果集如下

从结果集中可以看出group by rollup聚合了城市和部门组合,城市组合,所有组合三种情况。输出结果展示如下:

● CUBE ●

上例中的sql将rollup换成cube,sql样例参考如下:

select
        c.city_name                                                 ,
        dept.department_name                                        ,
        count(                       *) toal_personnum              ,
        round((ratio_to_report(count(*))over())*100, 2) person_ratio,
        sum(emp.salary) total_salary                                ,
        round((ratio_to_report(sum(emp.salary))over())*100, 2) sal_ratio
from
        DMHR.employee emp   ,
        DMHR.department dept,
        DMHR.location l     ,
       DMHR.city c
where
        emp.department_id = dept.department_id(+)
    and dept.location_id  = l.location_id(+)
    and l.city_id         = c.city_id(+)
group by
        cube (c.city_name, dept.department_name);

结果集如下:

 从结果集中可以看出group by cube聚合了城市和部门组合,城市组合,部门组合,所有组合四种情况。结果集展示如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值