2012-11-30 55 views
1

好吧,说我有两栏,Person和Donation。例如,这些行如下:SQL组总结

+++++++++++++++ 
Fred | $1000 
Fred | $500 
Bob | $1000 
Bob | $7000 
Sally| $500 
Joe | $100 
+++++++++++++++ 

我怎么能得到它显示以下内容?

+++++++++++++++ 
Fred | $1500 
Bob | $8000 
Sally| $500 
Joe | $100 
+++++++++++++++ 

换句话说,我怎么能把某个人下的所有捐款归结在一起,然后总结出来呢?什么是一个可以实现这个功能的示例查询? (如果可能,一般情况下,不涉及在选择/总结条款中单独命名人员)

谢谢!

回答

6

当您使用带聚合函数的GROUP BY子句(如SUM)时,将为每个组计算聚合。

SELECT Name, SUM(Donation) FROM Donations GROUP BY Name 

如果你想获得更具体的结果,像那些人捐赠总额超过$ 500,引入HAVING条款。这有点像一个WHERE的汇总结果:

SELECT Name, SUM(Donation) FROM Donations GROUP BY Name 
    HAVING SUM(Donation) > 500 

SQL小提琴:http://sqlfiddle.com/#!2/2de84/1/0

+0

谢谢!并感谢链接,它看起来像一个很好的工具。 – Nathan

2
select sum(a.donation),a.person from a_table as a group by a.person; 

a_table是你的表;

0

您可以使用此以下查询:

SELECT Name "Name", SUM(Donation) "Donation" FROM Donations GROUP BY Name