在单个SQL中明智地获取重复的员工计数部门

时间:2018-12-31 08:51:49

标签: sql

a

1 个答案:

答案 0 :(得分:1)

我想您想要一个这样的SQL

with tab( ID, Name, dep_id) as
(
 select 1,'A',1 union all
 select 2,'B',2 union all 
 select 3,'A',1 union all
 select 4,'A',2 union all
 select 5,'B',2 union all
 select 6,'A',2 
)
select name, 
       count(dep_id) as dept_count 
  from tab t
 group by name
 having count(name)>1;

NAME  DEPT_COUNT
----  ----------
 A        4
 B        2

由于您上次编辑(要添加到此答案中的 ),请考虑按 dept_id 分组:

with tab( ID, Name, dep_id) as
(
 select 1,'A',1 union all
 select 2,'B',2 union all 
 select 3,'A',1 union all
 select 4,'A',2 union all
 select 5,'B',2 union all
 select 6,'A',2 
)
select name, dept_id, 
       count(dept_id) as dept_count 
  from tab t
 group by name, dept_id
 having count(name)>1;

 NAME   DEPT_ID DEPT_COUNT
 ----   ------  ----------
  A        2         2
  A        1         2
  B        2         2