下面是一个sql服务器表,用于保存用户对足球比赛的预测。用户可以预测特定足球比赛的主场胜利、客场胜利或平局/平局。
我如何查询这个表才能找到前3个预测,前3个游戏必须是不同的gameId
无论是SQL还是LINQ解决方案都会更受欢迎
alt text http://preview.robson-brown.com/capture.png
发布于 2010-07-24 21:39:44
我假设你想要最强的预测,即大多数人对结果达成一致的游戏。
var predictions = db.Predictions
.GroupBy( g => g.gameId )
.Select( g => new
{
gameId = g.Key,
homeWin = g.Sum( h => h.homeWin ),
awayWin = g.Sum( a => a.awayWin ),
draw = g.Sum( d => d.draw )
})
.Select( g => new
{
gameId = g.gameId,
prediction = g.homeWin > g.awayWin
? (g.homeWin > draw
? 'homeWin'
: 'draw')
: (g.awayWin > g.draw
? 'awayWin'
: 'draw'),
strength = g.homeWin > g.awayWin
? (g.homeWin > draw
? g.homeWin
: g.draw)
: (g.awayWin > g.draw
? g.awayWin
: g.draw)
})
.OrderByDescending( g => g.strength )
.Take(3);
您也许能够组合这两个selects,但我认为这会损害代码的可读性。
https://stackoverflow.com/questions/3325217
复制相似问题