根据用户计算列的所有值

时间:2019-02-07 03:11:21

标签: sql sql-server

我的数据库中的表Charge_Money包含以下列:NickName,Money ... 该表具有我的用户已添加到他们的游戏帐户中的所有积分。 我想计算出在此期间充值最多的三名玩家(列货币),我该怎么做? 例如:

NickName        Money
player1         150000
player2         140000
player3         120000
player4         500000

上面,我们在排名的前三位中有玩家4,玩家1和玩家2。

4 个答案:

答案 0 :(得分:2)

您可以尝试以下查询:

Select top 3 DISTINCT NickName, Money
from Charge_Money
Order By Money DESC;

答案 1 :(得分:1)

我在这里使用以下查询:

select  NickName, Sum([Money])
from    Charge_Money CM
where  (select count(distinct [Money]) from Charge_Money where 
             [Money]>=CM.[Money])<=3
       AND [Date] Between 'Startdate' And 'Enddate'
Group by NickName

并获得结果,在此期间(开始日期-结束日期),有3个玩家的总和(充值)最多。

答案 2 :(得分:1)

尝试一下:

ImageView

根据需要更改Where子句。

答案 3 :(得分:0)

我使用以下查询:

SELECT DISTINCT TOP 3 NickName, SUM(Money)
FROM Charge_Money WHERE MONTH(Date) = 01 AND Day(Date) >= 21 AND Day(Date) <= 31
GROUP BY NickName
ORDER BY SUM(Money) DESC

并在下面得到它:

NickName            Money
player1             465200
p2                  300000
p3                  167400