我有一个名为agent的SQL表,如下所示:
数据中有人声称某些代理人的薪水高于他们监督的代理人的总和。 我编写了以下SQL查询来检索代理的名称,他们的个人薪水以及他们在下面监督的人员的工资总和。 只需要出示个人工资大于60000的代理商。
SELECT Agent.Agentname AS ["Supervisor Name"], Agent.Salary,
(SELECT SUM(Agent.salary) FROM Agent
WHERE Agent.Supervisor IS NOT NULL
GROUP BY Agent.Supervisor;)
AS ['Sum of Subordinate Salaries']
FROM Agent
WHERE (((Agent.[Supervisor]) Is Not Null) AND ((Agent.[salary])>=60000))
GROUP BY Agent.AgentName
我收到错误,但是说“#34;您的查询中没有包含指定的表达式' salary'作为聚合函数的一部分"。
如何纠正查询并从中获得所需的结果?
答案 0 :(得分:1)
create table #agent (agentno varchar(5),agentname varchar(30),functn varchar(10),supervisor varchar(30),salary int)
Insert into #agent values('A1','Jacobson','Manager','O1',120000), ('A2','Patel','Sales','A1',25000),('A3','Clark','Sales','A1',30000),
('A4','Mabaso','Admin','A1',35000),('B1','Letele','Manager','O1',100000), ('B2','Smit','Sales','B1',35000), ('B3','Ho','Sales','B1',30000),
('B4','Kruger','Admin','B1',40000),('C1','Mohd','Manager','O1',80000),('C2','Visser','MandR','C1',58000),
('C3','Davie','Admin','C1',42000),('C4','Nakosi','MandR','C1',60000),('C5','Lai','Admin','C4',38000)
select sup.agentname as supervisor_name ,SUM(agn.salary) as subordinate_salary_sum,sup.salary as supervisor_salary
from #agent agn
inner join #agent sup
on agn.supervisor=sup.agentno
where agn.salary>=60000
group by sup.agentname,sup.salary
当使用group by时,select语句中的列应该与group by语句一起出现,或者应该在一个聚合函数中。在你的查询agent.salary期望在group by中。