2016-08-19 14 views
0

私は列名と部門を持つ従業員のハイブテーブルを持っています。 1人の従業員が複数の部門に所属することができます。テーブル内で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

従業員テーブルは1つだけです。部門テーブルはありません。 – saket

関連する問題