2016-08-19 4 views
0

열 이름과 부서가있는 직원 하이브 테이블이 있습니다. 1 명의 직원이 여러 부서에 속할 수 있습니다.테이블에서 일대 다 관계에 대한 하이브 쿼리를 얻는 방법

name, department 
xxx,finance 
xxx,hr 
xxx,transport 
xxx,sale 
yyy,finance 
yyy,hr 
yyy,transport 
zzz,finace 
zzz,hr 
zzz,transport 
zzz,sale 

"판매"부서에 속하지 않는 고유 한 직원 이름을 알아야합니다.

답변

0

작동합니다 직원에서 고유합니다.

+0

내가 이것을 시도하자. 하이브는 where 절에서 하위 쿼리를 지원하지 않는다고 생각합니다. – saket

0

판매중인 모든 이름을 가져 오기 위해 하위 쿼리를 작성할 수 있습니다. 그런 다음 쿼리 결과를 테이블에 다시 결합하십시오.

select 
results.name, 
results.department 
from 
(select e.name 
from employee e 
where e.department='sale' group by e.name) invalid_names 
right join 
(select 
e.name, 
e.department 
from employee e) results 
on invalid_names.name = results.name 
where invalid_names.name is null; 

내가 이것을 할 수있는 더 좋은 방법이 상상 싶지만,이

0.13 하이브
Select name from employee 
    where employee.name not in 
     (select name from employee where department = 'sale') 
    group by name; 

희망의 이름으로 :

+0

직원 테이블은 하나뿐입니다. 부서 테이블이 없습니다. – saket

관련 문제