2012-06-12 17 views
6

मैं की कोशिश कर रहा हूं, प्रत्येक कर्मचारी का कर्मचारी संख्या प्रदर्शित करता है जो अन्य कर्मचारियों को प्रबंधित करता है, जिसे emp नामक नीचे दी गई तालिका के साथ प्रबंधित किया जाता है।COUNT गलत है?

empno ename job   mgr   hiredate sal  comm  deptno 
----- ------ ---------- ---------- ---------- ------- ------- ------ 
7369 Smith Clerk  7902  1980-12-17 800     20 
7499 Allen Salesman 7698  1981-02-20 1600  300  30 
7521 Ward Salesman 7698  1981-02-22 1250  500  30 
7566 Jones Manager  7839  1981-04-02 2975    20 
7654 Martin Salesman 7698  1981-09-28 1250  1400  30 
7698 Blake Manager  7839  1981-05-01 2850    30 
7782 Clark Manager  7839  1981-06-09 2450    10 
7788 Scott Analyst  7566  1982-12-09 3000    20 
7839 King President    1981-11-17 5000    10 
7844 Turner Salesman 7698  1981-09-08 1500  0   30 
7876 Adams Clerk  7788  1983-01-12 1100    20 
7900 James Clerk  7698  1983-12-03 950     30 
7902 Ford Analyst  7566  1983-12-13 3000    20 
7934 Miller Clerk  7782  1982-01-23 1300 

कोई विचार यह है कि मैं ऐसा करने के बारे में कैसे जा सकता हूं?

मैं

select empno,count(mgr) from emp group by empno,mgr; 

की कोशिश की है, लेकिन यह रिटर्न: इतना

empno  count(mgr) 
---------- ---------- 
7369  1 
7499  1 
7521  1 
7566  1 
7654  1 
7698  1 
7782  1 
7788  1 
7839  0 
7844  1 
7876  1 
7900  1 
7902  1 
7934  1 

धन्यवाद आपकी मदद के लिए।

+1

आप कृपया अधिक विस्तृत कर सकते हैं? – TechGuy

+1

आप अपने आउटपुट को किस तरह दिखाना चाहते हैं? उदाहरण आउटपुट? –

+1

@methuselah इसे मूल पोस्ट में एक छोटे नतीजे स्निपेट के साथ रखें और यह स्पष्टीकरण: * परिणाम यहां महत्वपूर्ण है * और इसके बारे में बेहतर प्रश्न के लिए तैयार रहें :) यह 'गिनती (एन)' के बीच का अंतर भी दिखाता है और 'गिनती (*)'; उचित शीर्षक/प्रश्न के साथ डुप्लीकेट/समाधान पर रीडायरेक्ट करना आसान है। (डाउन-वोट केवल अस्थायी होना चाहिए।) –

उत्तर

3

मैं mgr द्वारा समूह वास्तव में चाहते हैं, तो आप प्रबंधक प्रति एक समूह होगा और बस कितने व्यक्तियों है कि प्रबंधक का प्रबंधन करता है देखने के लिए एक गिनती कर सकते हैं। फिर, आप उस प्रबंधक की जानकारी प्राप्त करने के लिए तालिका में स्वयं से जुड़ सकते हैं। कुछ ऐसा:

SELECT E1.Mgr, E2.ename, Count(*) as Number FROM Employees E1 
INNER JOIN Employees E2 ON E1.mgr = E2.empno 
GROUP BY E1.Mgr 

हालांकि मैंने इसका परीक्षण नहीं किया है।

+0

आप e1.empno = e2.empno पर क्यों शामिल हो रहे हैं? – Gratzy

+0

क्षमा करें, टाइपो - मेरा मतलब था 'E1.mgr = E2.empno' –

1

आप इन कि शामिल होने का उपयोग नहीं करते की कोशिश कर सकते हैं:

select mgr, count(eno) 
    from employee 
group by mgr 

या

select name, e1.mgr, count(e1.eno) 
    from employee e1 
group by rollup (e1.mgr, name) 
संबंधित मुद्दे