如何在where子句中引用聚合函数

时间:2016-04-07 18:10:11

标签: sql-server

我的班级现在正在使用MS SQL-Server,我们正在玩弄查询。我被困在其中一个上面。 问题是:只向那些奖金中的部分薪水超过10,000美元的调查人员显示所要求的信息。按结尾名称的降序排列结果。

这是我到目前为止的代码:

SELECT Funding.PIN, Fname, Lname, SUM (([%Salary]/100)*Salary) AS TotalSalary
FROM Funding, Investigator
WHERE Funding.PIN = Investigator.PIN
AND 10000 < (SELECT SUM (([%Salary]/100)*Salary)
             FROM Funding, Investigator)
GROUP BY Funding.PIN, Fname, Lname
ORDER BY Lname DESC;

每当我运行它时,即使它们低于10,000美元,它也会显示所有调查人员及其工资。任何人如何正确执行这个?

1 个答案:

答案 0 :(得分:3)

使用HAVING子句代替WHERE

  • 过滤记录: Where Clause
  • 过滤群组:有条款

尝试这样的事情

SELECT Funding.PIN, Fname, Lname, SUM (([%Salary]/100)*Salary) AS TotalSalary
FROM Funding 
INNER JOIN Investigator
WHERE Funding.PIN = Investigator.PIN
GROUP BY Funding.PIN, Fname, Lname
having SUM (([%Salary]/100)*Salary)> 10000
ORDER BY Lname DESC;