Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用Max()组合两个子查询_Sql_Oracle_Count - Fatal编程技术网

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

Sql 如何使用Max()组合两个子查询,sql,oracle,count,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为其得分,

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

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

这就是,成为本地人和赢家,或者成为访客和赢家。现在,我需要为每支球队都这样做,并获得赢得的最大比赛数量

使用条件逻辑获得获胜球队,然后汇总:

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+中使用
仅获取第一行
。或者使用子查询和rownum或分析函数。

使用条件逻辑获取获胜团队,然后聚合:

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+中使用
仅获取第一行
。或者使用子查询和
rownum
或分析函数。

好主意,非常感谢。另外,使用你的想法,我可以得到最大值而无需订购,并使用have重复代码。好主意,非常感谢。此外,使用您的想法,我可以获得最大值而无需订购,并使用have重复代码。