SQL Query创建播放的匹配报告

时间:2016-08-09 12:54:38

标签: sql

最近我被问到一个下面的SQL查询问题?有人可以帮助我这个。我有一个包含三列的表 - 主队,客队和优胜队。如下所示。

H_T  A_T  W_T
AUS  IND  IND
ENG  AUS  ENG
IND  AUS  AUS
AUS  ENG  AUS
ENG  IND  IND
IND  ENG  IND

以上数据需要在SQL中转换,以显示具有以下属性的报告 球队名称,比赛总数,赢球数,平局数,丢失数,分数。

要计算积分,这些是各种公式(赢/抽奖/亏损)

胜利=胜利计数* 3

Draw = Draw Count * 1

损失=损失计数* 0

点将与上述三个值相加。

提前致谢

1 个答案:

答案 0 :(得分:2)

需要更多关于定义draw的内容的信息,这假设w_t列包含值draw而不是团队。

无论哪种方式,您都可以使用conditional aggregation来获得所需的结果。通常情况下,您会有一个teams表和join,但您可以使用union和子查询创建该表:

select t.*, 
  (win_count * 3) + (draw_count) as Points
from (
  select t.team,
    count(*) Total_Matches_Played,
    count(case when t.team = y.w_t then 1 end) Win_Count,
    count(case when t.team <> y.w_t then 1 end) Loss_Count,
    count(case when y.w_t = 'DRAW' then 1 end) Draw_Count
  from (
    select h_t as team from yourtable
    union select a_t from yourtable
    ) t join yourtable y on t.team in (y.a_t,y.h_t)
  group by t.team
  ) t