什么样的查询可以创建奥运会排名(金牌>;银牌>;黄铜)
本文关键字:gt 金牌 银牌 黄铜 查询 创建 奥运会 什么样 | 更新日期: 2023-09-27 18:00:59
我想进行奥运奖牌排名。现在我有一个数据透视表,它有CountryID、MatchID和Medal列。奖章列存储值1(金色(、2(银色(和3(黄铜(。
金牌最多的国家应该是排名中最高的,其次是银牌最多的国家。唯一的问题是,当金牌相等时,应该考虑银牌的数量,当然,如果金牌也相等,可以比较黄铜奖牌。
现在我采取以下(不成功(方法:首先,我做了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和resBrass组合到一个列表中。我再次查询这个列表,以获得金牌最多的国家排名更高的排名。
var list = all.OrderBy(t => t.Medal == 1 ? 1 : (t.Medal == 2 ? 2 : t.Medal == 3 ? 3 : 4)).ToList();
问题是,我最终得到了一个国家排名不止一次的列表。当德国和美国都获得了10枚金牌,同时也获得了银牌时,这两个国家在名单上都创下了另一项纪录。
我如何才能通过数据库设置获得符合奥运会标准的排名?
我希望创建的结果是:
[等级1]国家ID=2,黄金数量=10,白银数量=3,黄铜数量=5
[等级2]国家ID=3,黄金数量=10,白银数量=9,黄铜数量=9
[等级3]国家ID=4,黄金数量=9,白银数量=10,黄铜数量=10
……
提前感谢!
您可以根据加权排名计算每个国家的分数。
比例可以是金:银:古铜色=5:3:1
你可以根据分数对国家/地区进行排序
审查
奥运奖牌榜