我有这些桌子(一些足球桌)
我的目标是计算一些联赛的排名。
位置,队名,胜利,平局,失败,进球,进球,点数(3 * WI +抽签)。
如果两支队伍的分数相同,则可能性更高(A队和B队)
联赛表:将有3-4行
球队表:将有60-80排(20支球队/联赛)
阶段表:将有114-152行(38个阶段/联盟)
匹配表:将有1149-1520行(10个匹配/阶段)
最好是在sql server上为1个联盟制作所有聚合,还是只选择该联盟中的所有匹配并在服务器上进行所有计算?
可以使用1选择计算排名吗?
答案 0 :(得分:1)
我看到你的问题不在于如何进行所有这些计算,而是在何处进行,SQL Server或“服务器”(我相信你的意思是,选择数据并对你的应用程序进行计算) ,对吧?)
假设我理解正确,我可以告诉你,这取决于你如何实现它。 SQL Server非常擅长进行聚合计算(使用sum等分组)但在循环方面不是很好(例如使用游标)。
因此,如果您可以构建查询以获取结果,请在SQL上执行此操作。如果你需要做几个操作,比如“对于结果集上的每一行,运行其他查询,更新变量等等(这意味着在SQL上使用游标),最好将结果集返回给你的应用程序并执行在那里循环。
答案 1 :(得分:0)
我认为没有联赛比赛。
首先,如果你有一个奇数的球队或下雨,而且并非所有球队都玩同样数量的比赛,那么积分就不是苹果。
为什么治疗1不同于2?然后只是说大多数胜利,因为这与积分相同。如果有平局他们都得到平局。
On 2.在联赛中是多余的,好像是联赛排名,他们互相比赛,然后他们在同一个联盟。
你可以用1)替换1-3替换胜利2)头对头的目标。
我建议的地方
0 total points
1 league points
2 head to head wins
3 head to head goals
4 league goals
5 total goals
我会把总目标放在最后,所以A队没有动力在C队中实现目标。
我不认为这是一个选择,因为没有相同的行数 头对头需要单独选择。那些是小桌子。您可以使用Access执行此操作。
如果超过2条领带,头对头可能会更复杂。除非总比赛相同,否则你可以确保总比赛数量相等而不是结束赛季。如果你要确保每支球队与另一支球队打同样的次数,那么联盟的大小必须是2到一个力量(例如16)。而且你必须考虑团队退出或被停职的可能性。几乎不可能确保对称的时间表,因此需要有一个试图处理它的排名。在一个三方关系中你可以有两个分裂,第三个绑两个。在那种情况下,分裂的两个将获得更多的胜利1,但不应该排在高于第三个有两个关系的位置。所以我会用+1胜0平1负的平局点系统来修改2。为了处理可能的其他不对称,我会修改3以达到目标差分和。在这些线上使用总和目标差异为4和5。