2016-01-16 12 views
5

"department_id"、 "employee"、 "job"という3つのカラムを持つSQLテーブル "Company"があるとします。このような何か:SQL SELECTクエリ

DEPARTAMENT_ID | EMPLOYEE | JOB 
-------------------------------------- 
1    | Mark  | President 
1    | Robert | Marketing Manager 
1    | Rose  | Administration Assitant 
2    | Anna  | Programmer 
2    | Michael | Programmer 
2    | Celia | Sales Manager 
3    | Jhon  | Sales Manager 
3    | Donna | Programmer 
3    | David | Marketing Manager 

私は自分の仕事の少なくとも50%が同じである部署IDを返すクエリを記述したいと思います。私は私の例では必要

結果はただ次のようになります。

DEPARTAMENT_ID | 
-------------------------------------- 
2    | 

私は、このSQLクエリを書くにはどうすればよいですか?

+0

あなたがしてください試してみました何 –

答えて

4

これはちょっと難しいですが、部門内の仕事にいる人の総数と総数を比較する必要があります。そのため、1つの方法2件の集計を使用しています。

select department_id 
from (select department_id, count(*) as numemp 
     from t 
     group by department_id 
    ) d join 
    (select department_id, max(numemp) as numemp 
     from (select department_id, job, count(*) as numemp 
      from t 
      group by department_id, job 
      ) d 
    group by department_id 
    ) dj 
    on d.numemp <= 2 * dj.numemp; 

あなたは正確に2つのジョブの間で分割された1つの部門を持っている場合は、重複する可能性がありますその場合は、select distinctを使用

+0

すっごいを表示それは動作します。。!。完璧な!!!:Oありがとうございました!私はこれのようなことをしようとしていたが、私はあまり複雑すぎる。 – Mayra