下面是一個sql服務器表,用於保存用戶對足球比賽的預測。用戶可以預測主場勝利,客場勝利或特定足球比賽的平局/平局。SQL到LINQ簡單查詢?
我如何可以查詢該表找到前3名的預測,前3場比賽必須是不同的遊戲ID的
SQL或LINQ的解決方案將大大appriciated
alt text http://preview.robson-brown.com/capture.png
下面是一個sql服務器表,用於保存用戶對足球比賽的預測。用戶可以預測主場勝利,客場勝利或特定足球比賽的平局/平局。SQL到LINQ簡單查詢?
我如何可以查詢該表找到前3名的預測,前3場比賽必須是不同的遊戲ID的
SQL或LINQ的解決方案將大大appriciated
alt text http://preview.robson-brown.com/capture.png
我會假設你想要最強大的預測,即大多數人對結果達成一致的博弈。
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);
您可能可以結合這兩個選擇,但IMO會損害代碼的可讀性。
謝謝你tvanfosson你回答了我錯過了,是的,我想要最一致的預測,我會測試你的回答和報告回!謝謝 – 2010-07-24 13:49:57
感謝tvanfosson你的解決方案效果很好 – 2010-07-24 20:31:10
因此,給定您的示例數據,您希望您的示例輸出是什麼? – 2010-07-24 13:17:11
你如何排名預測? – 2010-07-24 13:18:09
對不起,是的輸出!所有我想要的是gameId被輸出 使用示例數據我們可以看到gameId 5都有5個主勝和5個客場勝預測,(在他的情況下,我會選擇最高評級的球隊成爲最喜歡的,這是出這個問題的範圍,我猜)因爲我不希望gameId 5被返回兩次, – 2010-07-24 13:39:02