【问题标题】:How to return each department name and the number of employees for each department如何返回每个部门名称和每个部门的员工人数
【发布时间】:2020-06-03 14:45:09
【问题描述】:

给定以下结构,尝试制作一个显示每个部门名称和每个部门员工人数的程序。

尝试了下面的代码,但没有按预期工作。

CREATE PROCEDURE SelectDepartmentNameandEmployee
AS
SELECT name
FROM Department
JOIN Employees as e
        on d.departmentID = e.departmentID

表结构

[Department]
(
    [departmentID] INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
    [name] VARCHAR(50) NOT NULL,
    [costCentreID] INT FOREIGN KEY REFERENCES CostCentre(costCentreID)
);



[Employees]
(
    [employeeNo] INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
    [lastName] VARCHAR(50) NOT NULL,
    [firstName] VARCHAR(50) NOT NULL,
    [gender] CHAR NOT NULL,
    [IDNumber] VARCHAR(20) NOT NULL,
    [salaryLevelID] INT,
    [departmentID] INT FOREIGN KEY REFERENCES Department(departmentID)
);

【问题讨论】:

    标签: sql-server tsql join group-by count


    【解决方案1】:

    这是一个简单的聚合查询。你的失败是因为:

    • 缺少GROUP BY 子句
    • 查询中未定义表别名d

    考虑:

    SELECT d.name, COUNT(*) no_employees
    FROM Department d
    INNER JOIN Employees as e ON d.departmentID = e.departmentID
    GROUP BY d.departmentID, d.name
    

    如果您还想显示没有员工的部门,那么:

    SELECT d.name, COUNT(e.departmentID) no_employees
    FROM Department d
    LEFT JOIN Employees as e ON d.departmentID = e.departmentID
    GROUP BY d.departmentID, d.name
    

    【讨论】:

    • 你能给我推荐一个 SQL Server / 存储过程的好教程吗?
    • @TotalCode: the documentation 是一个很好的起点 - 它有几个工作代码示例。
    • 非常感谢。
    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多