【发布时间】:2015-09-14 14:25:33
【问题描述】:
我正在尝试在 MS SQL Server 中编写适当的 SQL 查询。 首先,我有以下表格:城镇,员工,地址。几乎每个员工都有 Manager,ManagerID 也是员工中的外键。 (自我关系)。我的目标是显示每个城镇的经理人数。到目前为止,我有这个代码:
SELECT t.Name, COUNT(*) AS [Managers from each town]
FROM Towns t
JOIN Addresses a
ON t.TownID = a.TownID
JOIN Employees e
ON a.AddressID = e.AddressID
GROUP BY t.Name
ORDER BY [Managers from each town] DESC
此查询返回每个城镇的员工人数,而不是经理人数。 如果我尝试下面的第二个查询,我会得到一些完全错误的东西:
SELECT t.Name, COUNT(*) AS [Managers from each town]
FROM Towns t
JOIN Addresses a
ON t.TownID = a.TownID
JOIN Employees e
ON a.AddressID = e.AddressID
JOIN Employees m
ON e.ManagerID = m.ManagerID
GROUP BY t.Name
ORDER BY [Managers from each town] DESC
这是'Employees'表的结构:
EmployeeID、FirstName、LastName、MiddleName、JobTitle、DepartamentID、ManagerID、HireDate、Salary、AddressID
正确的查询必须返回这个结果集:
Town | Managers from each town
Issaquah | 3
Kenmore | 5
Monroe | 2
Newport Hills | 1
【问题讨论】:
-
示例数据会非常有帮助,SQL Fiddle 也是如此。
标签: sql sql-server tsql