ITPub博客

首页 > 数据库 > Oracle > [SQL]关于Concatenated Groupings的问题[转载]

[SQL]关于Concatenated Groupings的问题[转载]

原创 Oracle 作者:chenyan995 时间:2008-11-27 20:34:15 0 删除 编辑

关于Concatenated Groupings的问题

SELECT department_id, job_id, manager_id, SUM(salary)
FROM employees
GROUP BY department_id,ROLLUP(job_id),CUBE(manager_id);

The example in the slide results in the following groupings:
• (department_id, manager_id, job_id )
• (department_id, manager_id)
• (department_id, job_id)
• (department_id)

解释:

首先看看SG上面的例子,
GROPU BY GROUPING SETS(a,b),GROPUING SETS(c,d)
等价于:
GROUP BY (a,c)
UNION
GROUP BY (a,D)
UNION
GROUP BY (b,c)
UNION
GROUP BY (b,d)
而rollup(job_id)=(job_id,null),cube(manager_id)=(manager_id,null)所以GROPU BY department_id,ROLLUP(job_id),CUBE(manager_id)就等价于deparment_id*(job_id,null)*(manager_id,null)最后的结果为:
(department_id,job_id,manager_id),(department_id,null,manager_id),(department_id,job_id,null),(department_id,null,null)=>
(department_id,job_id,manager_id),(department_id,manager_id),(department_id,job_id),(department_id);

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8558093/viewspace-1013928/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: [SQL]学习007有感
请登录后发表评论 登录
全部评论
  • 博文量
    34
  • 访问量
    73625