最近我被问到一个下面的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
点将与上述三个值相加。
提前致谢
答案 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