2016-08-07 12 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

が、それは、各行が異なる結果を持っている必要があります。

私はプロジェクトと従業員の合計に各部門を示し、そのグループIその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)は必要ありませんが、私はそれを残しているとは分かりません。 in。
  • は、FROM句のコンマを使用しないでください。 常には、明示的なJOIN構文を使用します。
+0

ええ、 (DISTINCT) 'あなたがそこに入れたり、何も問題がなければ(私はheheを試していた) 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

回答ありがとうございました:) –

関連する問題