2013-12-22 74 views
1

我有三個表的辦公室,經理,工作人員。以下是這些表格的內容。sql選擇查詢難點

辦公室

 office_id office_location office_telephone office_fax 

    100  brisbane   01438263   789 
    101  newyork   01457899   978 
    102  chicago   01457989   789 

經理

 office_id manager_id manager_name manager_phone 

    100  200   wayne   9879664878 
    101  201   tom   9745997669  
    102  202   harry   9789979799 

員工

 manager_id staff_id salary 

    200   300  3000 
    201   301  4000 
    200   302  5000 
    200   303  7856 
    201   304  4000 
    202   305  7856 
    202   306  6000 

現在,我需要一個查詢,顯示該託塔l每個辦公室的工作人員及其經理人數。

下面是示例輸出

office_id office_location manager_id count(staff_id) 

    100  brisbane   200   3 
    101  newyork   201   2 
    102  chicago   202   2 

直到現在我都試過被顯示經理標識和工作人員爲他們工作。

 SELECT manager_id,count(staff_id) from staff group by manager_id; 

但是我很難顯示office_id以及它的位置。任何人都可以幫助我嗎?

+0

請爲您提供的數據提供示例輸出。 –

+0

啊只是忘了它。將盡快提供。 – user3127109

回答

0
SELECT o.office_id, 
     o.office_location, 
     m.manager_id, 
     count(*) staff_count 
    from staff s 
inner join manager m 
    on m.manager_id = s.manager_id 
inner join office o 
    on o.office_id = m.office_id 
group by o.office_id, 
      o.office_location, 
      m.manager_id; 
+0

Thanx很多人! – user3127109

0

內查詢獲取數和每單經理工資總額第一... THEN,工作環比下跌拿到

SELECT 
     s.manager_id, 
     m.manager_name, 
     m.manager_phone, 
     o.office_location, 
     o.office_telephone, 
     o.office_fax, 
     s.NumOfEmployees, 
     s.AllSalary 
    from 
     (select s1.manager_id, 
       count(*) as NumEmployees, 
       SUM(s1.salary) as AllSalary 
      from staff s1 
      group by s1.manager_id) s 
     join manager m 
      ON m.manager_id = m.manager_id 
      join office o 
       ON m.office_id = o.office_id 
+0

但它不會顯示員工編號。你可以看看示例輸出並提供一些幫助。 – user3127109

0

我剛剛創建的表和數據,你上面提到的細節和休息如果您只是想要在輸出中提到的列,則可以使用以下內容:

SELECT O.office_id 
    ,office_location 
    ,M.manager_id 
    ,COUNT(staff_id) 
FROM Staff S 
INNER JOIN Manager M 
    ON S.manager_id = M.manager_id 
INNER JOIN Office O 
    ON O.office_id = M.office_id 
GROUP BY M.manager_id 
    ,O.office_id 
    ,O.office_location 
+0

Thanx爲答案人! – user3127109