2016-08-07 44 views
0

我的查詢有問題,請幫我解決這個問題。多次計數,每個記錄有不同的值

我的查詢:

SELECT D.DEPTNO, 
(SELECT COUNT(DISTINCT P.PROJNO) FROM SCHEMA.PROJECT P, SCHEMA.DEPARTMENT D WHERE P.DEPTNO = D.DEPTNO) AS PROJECT, 
(SELECT COUNT(DISTINCT E.EMPNO) FROM SCHEMA.EMPLOYEE E, SCHEMA.DEPARTMENT D WHERE E.WORKDEPT = D.DEPTNO) AS EMPLOYEE 
FROM SCHEMA.DEPARTMENT D, SCHEMA.PROJECT P, SCEHMA.EMPLOYEE E GROUP BY [email protected] 

這裏的結果: enter image description here

但它應該每行有不同的結果。

我必須證明項目總員工和各部門的,所以我組通過DEPTNO,但顯示的所有項目總與員工

請幫我傢伙:)

+0

您能否介紹一下您的要求?你能指望什麼? – MichaelTiefenbacher

+0

我必須顯示項目和員工每個部門的總計,所以我通過deptno分組,但結果顯示所有總項目和員工 –

回答

0

我認爲你試圖寫這個查詢:

SELECT D.DEPTNO, 
     (SELECT COUNT(DISTINCT P.PROJNO) 
     FROM SCHEMA.PROJECT P 
     WHERE P.DEPTNO = D.DEPTNO 
     ) AS PROJECT, 
     (SELECT COUNT(DISTINCT E.EMPNO) 
     FROM SCHEMA.EMPLOYEE E 
     WHERE E.WORKDEPT = D.DEPTNO 
     ) AS EMPLOYEE 
FROM SCHEMA.DEPARTMENT D; 

注:

  • 你沒有在子查詢需要JOIN秒。相關條款已經足夠。
  • 在外部查詢中不需要GROUP BY
  • 您可能不需要COUNT(DISTINCT),但我不確定是否要離開它。英寸
  • 從不FROM子句中使用逗號。 總是使用明確的JOIN語法。
+0

是啊,我學習更多與您的答案,爲'COUNT (DISTINCT)'當你放在那裏或者沒有沒問題時(我試試嘿嘿) hehe謝謝你的回答先生,現在我的問題解決了:)非常感謝:) 至尊〜 –

0

當你連接表的結果 - 不要忘記連接謂詞! 如果我收到了你的要求正確的 - 這可能是一個可能的解決方案:

select deptno 
     ,count_projects 
     ,count_employees 
from (
    select deptno 
     ,count(projno) as count_projects 
    from project 
    group by deptno) as p 
inner join 
    (select workdept 
     ,count(*) as Count_employees 
    from employee 
    group by workdept) as e 
on p.deptno = e.workdept 

表DEPARTMENT是沒有必要的,除非你有從該表中檢索特定的數據也是如此。

+0

感謝您的回答,先生:) –

相關問題