请问我对SQL的初学者了解如何,但是我试图创建一个查询,向我提供每个OfficeID的代理总数(AgentID)。如果有人可以指导我正确的方向,或者是否有资源可以为您提供许多对将来有用的不同类型查询的示例!
我现在的问题是语法...我不确定要在上面获得所需输出的地方。
这是我现在拥有的:
表格办公室和代理商:
CREATE TABLE OFFICE
(
OfficeID NVARCHAR(5) UNIQUE,
OfficeAddress NVARCHAR(18) NOT NULL,
PRIMARY KEY(OfficeID)
)
GO
CREATE TABLE AGENT
(
AgentID NVARCHAR(8) UNIQUE,
OfficeID NVARCHAR(5) NOT NULL,
AgentType NVARCHAR(9) NOT NULL,
AgentFName NVARCHAR(10) NOT NULL,
PRIMARY KEY (AgentId),
FOREIGN KEY (OfficeID) REFERENCES OFFICE
ON DELETE CASCADE
ON UPDATE CASCADE
)
GO
查询:
SELECT
OFFICE.OfficeID
FROM
OFFICE,
(SELECT COUNT(AgentID)
FROM AGENT, OFFICE
WHERE OFFICE.OfficeID = AGENT.OfficeID
GROUP BY AGENT.OfficeID)
ORDER BY
OFFICE.OfficeID
答案 0 :(得分:2)
我可以使用JOIN和GROUP BY进行此操作,而无需嵌套:
SELECT o.OfficeID, COUNT(a.AgentID) NumberOfAgents
FROM Office o
LEFT JOIN Agents a ON a.OfficeID = o.OfficeID
GROUP BY o.OfficeID
答案 1 :(得分:0)
这样的事情(您期望的输出似乎丢失了):
SELECT O.OfficeID
, (
SELECT COUNT(*)
FROM AGENT A
WHERE A.OfficeID = O.OfficeID
)
FROM OFFICE O
ORDER BY O.OfficeID
答案 2 :(得分:0)
您需要根据我的需求具体说明所需的内容,我认为您不需要这种复杂的查询。例如,您可以从以下查询中获得所需的输出
Select officeid, count(1) as NoofAgents from Agents
group by officeid
SQL可以通过多种方式为您提供所需的方式,您可以根据优化的解决方案进行选择。
享受伴侣