簡體   English   中英

子查詢問題

[英]Sub-Query Problem

部門(DepartID,DepName)

員工(姓名、部門 ID)

我需要的是部門中具有 DepName 的員工人數。

我會使用outer join而不是子查詢。

SELECT d.DepName, COUNT(e.Name)
FROM Department d
LEFT JOIN Employees e ON e.DepartID = d.DepartID
GROUP BY d.DepartID, d.DepName
SELECT d.DepName, COUNT(e.Name)
    FROM Department d
        LEFT JOIN Employees e
            ON d.DepartID = e.DepartID
    GROUP BY d.DepName

不需要子查詢。

SELECT dep.DepName, COUNT(emp.Name)
FROM DepName dep
    LEFT OUTER JOIN Employees emp ON dep.DepartID = emp.DepartID
GROUP BY dep.DepName
SELECT COUNT(DISTINCT Name) FROM  
 Department AS d, Employees AS e   
WHERE d.DepartID=e.DepartID AND d.DepName = '$thename'

並且為了避免使用group by並在查詢計划中為您保存一個排序操作:

SELECT 
    Department.DepName, 
    (SELECT COUNT(*)
    FROM Employees 
    WHERE Employees.DepartID = Department.DepartID)
FROM 
    Department

如果您使用SQL Server版本2005更高版本,這是按部門統計員工的另一種可能方法。 .

SELECT      DPT.DepName
        ,   EMP.EmpCount
FROM        dbo.Department DPT
CROSS APPLY (
                SELECT  COUNT(EMP.DepartId) AS EmpCount
                FROM    dbo.Employees EMP
                WHERE   EMP.DepartId = DPT.DepartId
            ) EMP           
ORDER BY    DPT.DepName

希望有幫助。

樣例測試查詢output:

輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM