oracle 分组查询

数据库某张表A中每个系统有一个负责人(NAME)和备岗负责人(NAME_BAK),系统号唯一(ID),请统计出每个人作为系统负责人负责多少个系统,同时作为备岗负责人负责多少个系统,显示结果为三列(负责人姓名,作为主岗负责人负责系统的个数,作为备岗负责人负责系统的个数)。ld name name_bak(表中数据如下)

select t.name,t1.num,t2.num_bak
from (select distinct * from (select a1.name from A a1 union all select a2.name_bak from A a2)) t   --表中所有的人,有些人可能是负责人,但不是备岗负责人,相反,同理。
left join (select name, count(*) num from A t group by t.name) t1 on t.name=t1.name  --每个人作为负责人负责的系统的数量
left join (select name_bak, count(*) num_bak from A t group by t.name_bak) t2 on t.name=t2.name_bak  -- 每个人作为备岗负责人负责的数量
order by t.name;

结果如下:

猜你喜欢

转载自www.cnblogs.com/anxiong/p/9686262.html