0

我有一张桌子

EmpName | Bonus
Rohit   | 20
Steve   | 35
Rohit   | 9
Johnson | 15

现在我想要奖金<30的不同员工的用户名和奖金总和。答案应该是;

EmpName | Sum(Bonus)
Rohit   | 29
Johnson | 15

得到这个输出的查询是什么?

4

2 回答 2

2

您可以使用聚合函数sum()来获取每个人的总奖金empname,然后使用HAVING子句返回empname总奖金小于 30 的那个:

select empname, sum(bonus) TotalBonus
from yt
group by empname
having sum(bonus) < 30;

请参阅带有演示的 SQL Fiddle

或者,如果您只想合计那些bonus小于 30 的行,您可以使用:

select empname, sum(bonus) TotalBonus
from yt
where bonus < 30
group by empname;

请参阅带有演示的 SQL Fiddle

于 2013-04-19T11:12:50.997 回答
1
SELECT EmpName,
       SUM(Bonus) AS SumBonus
FROM dbo.Table1
WHERE Bonus < 30
GROUP BY EmpName

演示

于 2013-04-19T11:13:49.157 回答