主要是GROUPING SETS和ROLLUP函数,具体意思不好说清楚,只能通过例子来学习。

原表数据,如下图

GROUPING SETS测试

下面两段代码运行结果是一样,

select id,area,stu_type,sum(score) score 
from students
group by grouping sets(id,area,stu_type)


select a.id, null, null, sum( score ) from students a group by a.id
union all
select null, a.area, null, sum( score ) from students a group by a.area 
union all
select null, null, a.stu_type, sum( score ) from students a  group by a.stu_type 

 

 运行结果

ROLLUP测试

两段代码运行结果相同

select id,area,stu_type,sum(score) score 
from students
group by rollup(id,area,stu_type)
-------------------------------------------------------------------
select a.id,a.area,a.stu_type, sum( score ) from students a group by a.id,a.area,a.stu_type
union all
select a.id,a.area, null, sum( score ) from students a group by a.id,a.area
union all
select a.id, null, null, sum( score ) from students a  group by a.id 
union all
select null, null, null, sum( score ) from students a

运行结果

 

posted on 2013-05-21 15:51  无尽的缥缈  阅读(225)  评论(0编辑  收藏  举报