2016-08-04 1 views
-1

オリンピックメダルランキングを作りたいです。 今、私はCountryID、MatchIDとMedalの列を持つピボットテーブルを持っています。 メダル欄には1(金)、2(銀)、3(真鍮)の値が格納されます。どのような種類のクエリーがオリンピックランキング(金>銀>真鍮)を作成しますか?

最も多くの金を持っている国は、ランクが最も高く、その後に最も多くの銀があります。唯一のものは、金が等しいときは銀の金額が考慮されるべきです。真鍮のメダルを比較する。

今私は、次の(成功していない)アプローチを取る:、

var resGold = context.olympics_landen_wedstrijd.Where(n => n.medal == 1).GroupBy(n => n.LandID).Select(g => new { g.Key, Count = g.Count(), Medal = 2 }).OrderByDescending(n => n.Count); 

その後、私はresGoldを組み合わせresSilverと:私はこのような3つのクエリは、国ごとにメダルの量の概要を取得するために作る ファースト1つのリストにresBrassを追加します。そのリストは、最も金が多い国がより高いランク付けされているランキングを取得するために再度照会します。

var list = all.OrderBy(t => t.Medal == 1 ? 1 : (t.Medal == 2 ? 2 : t.Medal == 3 ? 3 : 4)).ToList(); 

問題は、私は国々が一度より多くランク付けされたリストに終わることです。ドイツとアメリカの両方に10個の金メダルがあり、どちらも銀メダルを獲得している場合、リストには両国の別の記録があります。

データベースの設定でオリンピック標準に従ってランキングを取得するにはどうすればよいですか?

Iを作成するために探していた結果である:

[RANK 1] CountryID = 2、numberofGold = 10、numberofSilver = 3、numberOfBrass = 5
[RANK 2] CountryID = 3、numberofGold = 10 、numberofSilver = 9、numberOfBrass = 9
[RANK 3] CountryID = 4、numberofGold = 9、numberofSilver = 10、numberOfBrass = 10
....

事前に感謝!

+0

に基づいて国を並べ替えることができます – Miriam

+0

評価はゴールド:シルバー:ブロンズ= 5:3:1(重み付けランク)、https://en.wikipedia.org/wiki/Olympic_medal_tableのレビュー –

+0

に基づいて評価することができます。私の日を救った! :) – Miriam

答えて

1

各国のスコアは加重ランクに基づいて計算できます。

比率は金なります銀:bronz = 5:3:1

あなたはそれが既にピボットテーブルでスコアDESC

レビュー

Olympic medal table

関連する問題