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

首先题目是这样的:

 

image

球队表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也没有判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值