请教一个oracle的sql查询的group by 的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 19:46:19
其实这是我们的一个作业。。不过这个我实在是没想明白要怎么弄,所以请教一下大家
我有一个表,叫Rental,存储一个公司向外租车的信息,包括这辆车所在的分部(r_branchno),出租时的里程表读数(r_startkms)和返还时的里程表读数(r_endkms),现在我要统计一下,哪个分部所租出去的车的行驶总里程最多,也就是哪个分部的所有租车记录的r_endkms-r_startkms的和最多。

于是我这么写:
select max(sum(r.rent_endkms-r.rent_startkms)) as "Total_Rental_Kilometers" from branch b,rental r
where b.br_no=r.br_no
group by b.br_managersname
可是我发现好像oracle没法让我获取,max的这条记录中其他列的值~
比如我如果要这么写:
select r.br_no,max(sum(r.rent_endkms-r.rent_startkms)) as "Total_Rental_Kilometers" from branch b,rental r
where b.br_no=r.br_no
group by r.br_no
就是想找出,这个租车行驶里程最多的分部的编号,br_no,可是oracle就出错:not a single-group group function

所以请教一下大家,我如何获得max(sum(r.rent_endkms-r.rent_startkms))这一行中的其他列的值?

万分感谢
感谢大家~我用2个子查询给做出来了
不过大家的结果都无法正常运行.

我想你只要一个表就行乐
select r.br_no,max(sum(r.rent_endkms-r.rent_startkms)) as "Total_Rental_Kilometers"
from rental r
group by r.br_no
order by max(sum(r.rent_endkms-r.rent_startkms))

select top 1 * from(select r_branchno,sum(r.rent_endkms-r.rent_startkms) as Total_Rental_Kilometers from Rental
group by r_branchno)a order by Total_Rental_Kilometers desc

首先对各分部进行求和,然后在各分部中取最大值,SQL如下,用到子查询.
select r_branchno,max(Total_Rental_Kilometers) from (select sum(rent_endkms-rent_startkms) as Total_Rental_Kilometers,r_branchno from Rental group by r_branchno )