服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - 世界杯猜想活动的各类榜单的SQL语句小结

世界杯猜想活动的各类榜单的SQL语句小结

2019-11-28 15:08MSSQL教程网 Sql Server

自己网站的世界杯猜想活动,整理了几个排行榜。写了半个小时的SQL,丢了多可惜,放在这里,反正是别人的地盘,不心疼。

/*增幅降幅排名*/ 

复制代码代码如下:


Select top 50 UserName,sum(ReceivePrice) - sum(GuessPrice) as ReceivePrice, 
cast(sum(CASE WHEN ReceivePrice>0 THEN 1.0 ELSE 0 END) / count(ReceivePrice) * 100 as numeric(4,1)) as Rate 
From [game_FantasyLog] 
WHERE IsJudge=1 
GROUP BY UserId,UserName 
ORDER BY sum(ReceivePrice) - sum(GuessPrice) ASC 


/*正确率错误率排名*/ 

复制代码代码如下:


Select top 50 UserName,sum(ReceivePrice) - sum(GuessPrice) as ReceivePrice, 
cast(sum(CASE WHEN ReceivePrice>0 THEN 1.0 ELSE 0 END) / count(ReceivePrice) * 100 as numeric(4,1)) as Rate 
From [game_FantasyLog] 
WHERE IsJudge=1 
GROUP BY UserId,UserName Having count(UserId) >= 5 
ORDER BY cast(sum(CASE WHEN ReceivePrice>0 THEN 1.0 ELSE 0 END) / count(ReceivePrice) * 100 as numeric(4,1)) ASC 


/*大手笔排名*/ 

复制代码代码如下:


Select top 50 l.UserName,sum(l.GuessPrice),sum(l.ReceivePrice),f.title 
From [game_FantasyLog] l left join [game_fantasy] f on l.topicid = f.id 
GROUP BY l.TopicId,l.UserName,f.title 
ORDER BY sum(l.GuessPrice) DESC 


/*冷门场次排名*/ 

复制代码代码如下:


Select top 50 f.id,f.title,f.GuessPrice,(select sum(receivePrice) FROM [game_FantasyLog] l where l.topicid = f.id), 
cast((select sum(CASE WHEN ReceivePrice>0 THEN 1.0 ELSE 0 END) / f.GuessTimes FROM [game_FantasyLog] l2 where l2.topicid = f.id) as numeric(4,2)) 
From [game_Fantasy] f WHERE f.GuessPrice > 1000 
ORDER BY (select sum(receivePrice) FROM [game_FantasyLog] l where l.topicid = f.id) ASC 


/*冷门场次的命中者*/ 

复制代码代码如下:


Select top 50 UserName,sum(ReceivePrice) as ReceivePrice 
From [game_FantasyLog] where topicid=29 
GROUP BY TopicId,UserName 
ORDER BY sum(ReceivePrice) DESC 

延伸 · 阅读

精彩推荐