球队以及得分计算的SQL语句

Posted tuhooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了球队以及得分计算的SQL语句相关的知识,希望对你有一定的参考价值。

首先题目是这样的:

 

技术分享图片

球队表teams

比赛表matches

赢了得3分,平局的得1分,输了得0分。

 

思路:

一个球队的成绩分为两部分,作为主队的得分和作为客队的得分;

计算出一次比赛中具体得了多少分,具体的比较我也不知道;

得到这个零时表然后根据球队group求和;

最后根据球队表关联得出球队的名字;

然后在排个序。

 

select teams.*, 
       ISNULL(points.num_points,0) as num_points 
from teams left join 
    (select host_team,
            SUM(hostpoint) as num_points 
     from (select host_team,
                  (case when host_goals>guest_goals then 3 when host_goals=guest_goals then 1 else 0 end) as hostpoint
           from matches
           union
           select guest_team,
                  (case when host_goals>guest_goals then 0 when host_goals=guest_goals then 1 else 3 end) as guestpoint
           from matches) point 
     group by host_team) points 
on teams.team_id=points.host_team
order by points.num_points desc,teams.team_id asc

 

1. 我不知道怎么把比赛结果转化为得分,case when还不会用,不知道还有这个

2. ISNULL也没有判断

以上是关于球队以及得分计算的SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中选择具有一个最大值但另一个最小值的项目 [关闭]

[HNOI2013]比赛

bzoj 3139: [Hnoi2013]比赛

bzoj3139: [Hnoi2013]比赛

SQL Server:使用聚合运算符 COUNT() 打印左表中的所有行

MS Access SQL 运行总数