2015-11-06 61 views
0

我试图从我们的数据库中获得前10名捐款。每个蒸汽都可以多次捐赠,因此需要多次捐赠才能获得总额。一个例子是表:获得排名前5的总成绩

steamid    amount  email     date 
76561197991519598 25   [email protected]  1445107360 
76561198129490626 10   [email protected]  1445106920 
76561197994977992 5   [email protected]  1445107724 
76561197991519598 25   [email protected]  1445107519 
76561197994977992 50   [email protected]  1445107047 

结果应该是:

76561197994977992 = 55 
76561197991519598 = 50 
76561198129490626 = 10 

(从最有序到最低)。

我测试过自己的东西,并得到奇怪的结果这里是我的尝试:

SELECT st.* 
FROM donations st 
WHERE st.amount = 
    (SELECT SUM(t.amount) 
    FROM donations t 
    WHERE t.steamid = st.steamid) 
GROUP BY st.steamid 
ORDER BY st.amount 

回答

1

试试这个:

select steamid, sum(amount) as total from donations 
group by steamid 
order by 2 desc 
limit 5 
+0

像往常一样,我太过复杂了!谢谢。 – user1372896