2017-02-17 9 views
-1

要件:1つのクエリのみを使用して、各部門の従業員数(2つの表、部門および従業員)を表示します。従業員数の減少による注文(従業員のいない部署の場合は依然としてそれを示している)。同じサイズの部門の場合は部門名順にアルファベット順に並べ替えます。私の解決策の従業員の数が同じときにも、それはアルファベット順の部門の順序を示していない、いない従業員と部署を示していない。sql、employeeおよびdepartment

SELECT d.DEPT_ID, 
    DEPT_NAME, COUNT(s.STUDENT_ID) as numStudents 
    FROM Departments d, Students s 
    WHERE d.DEPT_ID = s.DEPT_ID 
    GROUP BY d.DEPT_ID 
    ORDER BY numStudents DESC; 

答えて

0

はLEFTを使用するには、クロスの代わりにJOINを使用すると、現在行っている参加。なし学生と部署を示すために

SELECT d.DEPT_ID, 
d.DEPT_NAME, COALESCE(COUNT(s.STUDENT_ID),0) as numStudents 
FROM Departments d, 
LEFT JOIN Students s 
    ON s.dept_id = d.dept_id 
GROUP BY d.DEPT_ID, d.dept_name 
ORDER BY numStudents DESC, DEPT_NAME; 
0

、あなたは外積、LEFT JOINを使用する必要がありません。同じ数の学生がいる場合は名前で注文するには、ORDER BY句に追加する必要があります。

SELECT d.DEPT_ID, DEPT_NAME, IFNULL(COUNT(s.STUDENT_ID), 0) AS numStudents 
FROM Departments AS d 
LEFT JOIN Students AS s ON d.DEPT_ID = s.DEPT_ID 
GROUP BY d.DEPT_ID 
ORDER BY numStudents DESC, DEPT_NAME