2016-01-16 8 views
5

मान लीजिए कि मेरे पास तीन कॉलम के साथ एक SQL तालिका "कंपनी" है: "department_id", "कर्मचारी", "नौकरी"। कुछ इस तरह:एसक्यूएल चयन क्वेरी

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% ही कर रहे हैं देता है लिखने के लिए करना चाहते हैं।

परिणाम मैं अपने उदाहरण में की जरूरत होगी सिर्फ:

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

मैं इस SQL ​​क्वेरी लिख सकता हूँ? मुझे लगता है कि मैंने सभी प्रकार की चीजों की कोशिश की लेकिन मुझे यह नहीं मिला :(

+0

शो क्या आप कृपया की कोशिश की है हो सकता है –

उत्तर

4

यह थोड़ा मुश्किल है। आपको किसी विभाग में कुल संख्या में किसी नौकरी पर लोगों की कुल संख्या की तुलना करने की आवश्यकता है। तो, एक विधि का उपयोग करता है दो एकत्रित:।।।

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; 

आप मिल डुप्लिकेट यदि आप एक विभाग है कि ठीक दो नौकरियों के बीच विभाजित है है उस मामले में, select distinct का उपयोग

+0

Omg यह काम करता है पूरी तरह से !!!: ओ बहुत बहुत धन्यवाद !!! मैं ऐसा कुछ करने की कोशिश कर रहा था लेकिन मैं बहुत जटिल करने के लिए उपयोग करता हूं। एक अच्छा दिन है !! – Mayra

संबंधित मुद्दे