可用oracle账号密码举例说明数据库union all的作用

举例说明数据库union all的作用

 

现有一张表A

id name1 name2

1 aa bb

2 aa cc

3 bb cc

4 aa dd

……………..

  www.2cto.com  

需要统计每oracle账号个名字出现的次数

希望得到的结果是

aa 3

bb 2

cc 2

dd 1

下面是具体的步骤,通过逐步分析来体现union all 的作用

————————————————————————————

第一步:求name1的数据信息

  www.2cto.com  

select name1 name,count(*) num from dd group by name1

查询结果:

name num

 aa        3

 bb       1

********************************

第二步:求name2的数据信息

 

select name2 name,count(*) num from dd group by name2

查询结果:

 

name num

   bb    1

   cc     2

  dd     1

**********************************

第三步:把第一步和第二步的用union all结果结合起来

  www.2cto.com  

select name1 name,count(*) num from dd group by name1

union all

select name2 name,count(*) num from dd group by name2

查询结果:

 

name num 

aa       3

bb       1

bb      1

cc       2

dd      1

*****************************************

最后在第三步的基础上再次搜索就可以得到结果

select name,sum(num) from (select name1 name,count(*) num from dd group by name1 union all select name2 name,count(*) num from dd group by name2) t

  www.2cto.com  

 group by name ;

 

查询结果:

name  num

 

aa          3

bb          2

cc          2 

dd         1

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。