我不确定如何获得总和的最大值。我以为我可以按降序显示它,然后使用“rownum = 1”但是没有用。有什么建议?这是我的代码。
select ca_make, sum(ma_cost)
from cab join maintain on ca_cabnum = ma_cabnum
Where rownum =1
group by ca_make
order by sum(ma_cost) desc
答案 0 :(得分:1)
在ORDER BY之前应用ROWNUM()。您需要使用子查询:
select * from (
select ca_make, sum(ma_cost)
from cab join maintain on ca_cabnum = ma_cabnum
group by ca_make
order by sum(ma_cost) desc
)
where rownum = 1
在Oracle中实现[top-n]查询有几种不同的方法。 Find out more by searching SO for [oracle] [top-n].
答案 1 :(得分:0)
首先,您可能想要使用LEFT JOIN
。使用JOIN
,您将排除所有 no 维护的出租车。 (显然,这对于找到最高成本无关紧要,但在寻找最低成本时会有所不同;并且会严重扭曲您尝试从此查询编译的任何统计信息)。
现在,回答你的问题......试试这个:
select * from
(select ca_make, sum(ma_cost)
from cab
left join maintain on ca_cabnum = ma_cabnum
group by ca_make
order by sum(ma_cost) desc)
where rownum = 1
here是ROWNUM
的一个很好的解释。您的案例是专门解决的,距离页面的一半不到一点(但如果您打算使用该功能,整个页面可能值得一读)。