如何结合使用Max()结合两个子查询

时间:2018-12-29 16:26:19

标签: sql oracle count

我有一张桌子,上面有关于篮球比赛的信息,我需要得到赢得更多比赛的球队。该表如下表所示:

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);

这是在本地赢得胜利或在访客赢得胜利。现在我需要为每个团队做到这一点,并获得获胜的最大数量

1 个答案:

答案 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或解析函数。