码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-03-24 22:33:01      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:isp   sql   color   host   sel   部分   group   display   des   

首先题目是这样的:

 

技术分享图片

球队表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语句

标签:isp   sql   color   host   sel   部分   group   display   des   

原文地址:https://www.cnblogs.com/tuhooo/p/8641449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!