2017-01-03 10 views
0

ここに私の問題は、私にいくつかの問題を与えているクラスの宿題からの質問です。2つ以上のテーブルをSQLで '共通の列'なしで結合する方法

Syndeyに所在するすべての部門で5人以上の従業員が参加した月を表示します。

PS:謝罪します。私の先生は、私にそのようなテーブルを作成するように指示しました。

表の場所:

LOCATION_ID NOT NULL NUMBER(4)  
STREET_ADDRESS   VARCHAR2(40) 
POSTAL_CODE    VARCHAR2(12) 
CITY   NOT NULL VARCHAR2(30) 
STATE_PROVINCE   VARCHAR2(25) 
COUNTRY_ID    CHAR(2) 

表ジョブ:

JOB_ID  NOT NULL VARCHAR2(10) 
JOB_TITLE NOT NULL VARCHAR2(35) 
MIN_SALARY   NUMBER(6)  
MAX_SALARY   NUMBER(6) 

JOB_HISTORY:

JOB_ID  NOT NULL VARCHAR2(10) 
JOB_TITLE NOT NULL VARCHAR2(35) 
MIN_SALARY   NUMBER(6)  
MAX_SALARY   NUMBER(6) 

表の従業員:

EMPLOYEE_ID NOT NULL NUMBER(6)  
FIRST_NAME    VARCHAR2(20) 
LAST_NAME  NOT NULL VARCHAR2(25) 
EMAIL   NOT NULL VARCHAR2(25) 
PHONE_NUMBER   VARCHAR2(20) 
HIRE_DATE  NOT NULL DATE   
JOB_ID   NOT NULL VARCHAR2(10) 
SALARY     NUMBER(8,2) 
COMMISSION_PCT   NUMBER(2,2) 
MANAGER_ID    NUMBER(6)  
DEPARTMENT_ID   NUMBER(4)  

表部門:すべての

DEPARTMENT_ID NOT NULL NUMBER(4)  
DEPARTMENT_NAME NOT NULL VARCHAR2(30) 
MANAGER_ID    NUMBER(6)  
LOCATION_ID    NUMBER(4)  
+1

これは宿題に答えられる場所ではありません。あなたが何らかの努力を示すなら、人々があなたを助けることができます。 –

+1

一般的な列なしで参加することはできません。これは参加の仕方ではありません。 –

+0

答えは0です。「シンディー」は存在しません。 –

答えて

0

まず、SQLスクリプトでキャップを使用する方法について申し訳なことしないでください。あなたの先生はあなたに正しいガイドラインを教えています。実際には、SQLスクリプトを大文字、特にSQLキーワードとデータ型で記述することをお勧めします(クリーンコードの方法)。大文字で列名を保存したい場合は、それを選択します。

ここに希望の出力を得るためのクエリです。現在ターゲットとしているデータベースについては言及していません。 Microsoft SQL Serverデータベースを対象としたクエリを作成しました。

SELECT HiredMonth,COUNT(HiredMonth) 
FROM 
(
SELECT DATENAME(MONTH,E.HIRE_DATE) AS HiredMonth 
FROM Employees E 
INNER JOIN Departments D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID 
INNER JOIN Locations L ON D.LOCATION_ID = L.LOCATION_ID 
WHERE CITY = 'Sydney') AS P 
Group BY P.HiredMonth 

P.S.他のデータベースを対象としている場合、DATENAMEのようなクエリで使用される組み込み関数は、このクエリを他のデータベースでコンパイルできるように変更する必要があります。

関連する問題