2012-04-27 8 views
1

私は初心者ですが、私はこれについて行く方法がわかりません..誰でも私を助けることができますか?以下の表を考えると sqlのクエリ..混乱

...

DEPARTMENT

DEPT_ID  NAME 
1 HR 
2 Technical 
3 Marketing 
4 Sales 

EMPLOYEE

ID NAME DEPT_ID  SALARY MANAGER_ID 
1 Alex 2 2000  
2 Sally 1 2000  
3 Amit 2 1500 1 
4 Jason 1 1500 1 
...  ...  ...  ...  ... 

以前からDEPARTMENTEMPLOYEEテーブルを使用して、印刷にSQLクエリを書きます各dで働く従業員の数epartment。出力は次のようになります。

NAME COUNT 
HR 2 
Technical 2 
Marketing 0 
Sales 0 

はないすべての部門は、まだスタッフされていることに注意してください、ので、いくつかの部門は、任意の従業員を有していなくてもよいです。我々は依然として、これらの部門が結果にゼロカウントで出現することを望んでいます。

上記のEMPLOYEEテーブルを使用して、各マネージャの下で働いている従業員の数を印刷するSQLクエリを作成します。

NAME COUNT 
Alex 2 
Sally 0 
+2

はこの宿題のですか?あなたは本を相談しましたか? – dirkgently

+0

私に方向を教えてください。私は完全な答えを探していません。 –

+0

SQLで始まります - つまり、SELECT文を使用します。どのようなJOIN条件の下でデータがどこから来るのかを教えてください。 – Randy

答えて

1

あなたは部門によって、テーブル、グループに参加し、部門ごとの行数を取る必要があります。出力は次のようになります。問題の最初の部分に
Try This Link

+0

ありがとう..私はそれを試してみましょう。 –

0

ソリューション:

select NAME, count(NAME) 
from EMPLOYEE 
group by MANAGER_ID 
:問題の第二の部分(私はこの1つが正しいかどうかわからない)へ

select d.NAME, count(e.NAME) 
from EMPLOYEE as e 
right join DEPARTMENT as d 
on e.DEPT_ID = d.DEPT_ID 
group by d.DEPT_ID 

ソリューション

sqlfiddleを確認してください:http://sqlfiddle.com/#!2/5e802/13

+0

2つ目は確かに正しくありません - テーブルを自己結合する必要があります(結果に_managerの名前が必要です)。最初のものについては、ほとんどの人が 'Department'を'FROM'節、' LEFT JOIN'を 'Employee'に変更します。 –

0

それはあなたを助けることがあり、これを試してみてください。

A)

select d.Name as DepartmentName, count(e.id) as EmployeeCount from employee as e, department as d where e.DEPT_ID = d.DEPT_ID group by d.Name; 

B)

select a.name as Manager_Name,Count(a.name) as EmployeeCount from employee a, employee b where a.id=b.MANAGER_ID group by a.name;