我有一张桌子,上面有关于篮球比赛的信息,我需要得到赢得更多比赛的球队。该表如下表所示:
EQ1 EQ2 DATE RES1 RES2
--------------------------------------
CAL VAL 21/10/16 72 82
UNI VAL 24/02/17 58 68
RMA FCB 02/11/16 81 64
其中e1是本地团队,res1为其得分,e2访客团队,res2为其得分。
我尝试了不同的方法,但没有结果,并且在stackoverflows中似乎没有解决方法的答案。我知道我可以通过以下查询知道一支球队赢得了多少场比赛:
select *
from encuentros
where (eq1 = e1.eq1 and res1 > res2)
or (eq2 = e1.eq2 and res2 > res1);
这是在本地赢得胜利或在访客赢得胜利。现在我需要为每个团队做到这一点,并获得获胜的最大数量
答案 0 :(得分:2)
使用条件逻辑获取获胜团队,然后进行汇总:
select winning_team, count(*)
from (select (case when res1 > res2 then eq1 else eq2 end) as winning_team
from t
) t
group by winning_team
order by count(*) desc;
要仅获取一行,请在Oracle 12c +中使用fetch first 1 row only
。或使用子查询和rownum
或解析函数。