SQL嵌套求和查询

时间:2017-04-20 08:03:32

标签: sql ms-access group-by sum

我有一个名为agent的SQL表,如下所示:

tblAgent

数据中有人声称某些代理人的薪水高于他们监督的代理人的总和。 我编写了以下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'作为聚合函数的一部分"。

如何纠正查询并从中获得所需的结果?

1 个答案:

答案 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中。