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

其实这是我们的一个作业。。不过这个我实在是没想明白要怎么弄,所以请教一下大家
我有一个表,叫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个子查询给做出来了
不过大家的结果都无法正常运行.

第1个回答  2009-10-12
首先对各分部进行求和,然后在各分部中取最大值,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 )
第2个回答  2009-10-12
我想你只要一个表就行乐
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))本回答被网友采纳
第3个回答  2009-10-12
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

oracle中groupby和orderby同时用
在Oracle中,可以同时使用GROUP BY和ORDER BY对查询结果进行分组和排序。以下是 1. GROUP BY的作用 GROUP BY子句在SQL查询中用于将结果集按照一个或多个列进行分组。它通常与聚合函数一起使用,以便对每个分组进行统计或计算。例如,如果你想按部门统计员工的数量,你可以使用GROUP BY子句根据部门列进行...

oracle 中group by 的用法问题
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。在带有group by 子句的查询语句中,在se...

关于Oracle的SQL语句中group by的空值问题请教?
你那个不是由于group by引起的,而是因为where那里过滤掉了 有一个笨办法,两个sql联合起来用 SELECT DISTINCT t1.latn_id, t2.cnt FROM tb_markactive_win_record t1 LEFT JOIN (select t.latn_id,count(*) AS cnt from card.tb_markactive_win_record t where t.prize_id='6'and t.win...

oracle里group by 和having count的问题
--1,查询hm有重复的记录select hm,count(*) from a group by hm having count(*)>1--2,查询hm和xm都有重复select hm,xm count(*) from a group by hm,xm having count(*)>1

菜鸟请教SQL如何计算有几组(GROUP BY 问题)
你的语句按照字段b分组,结果有几组是根据字段b去重复后的个数来确定的。如果是oracle你可以这样查询:select distinct 字段b from table;结果为3,也就是3组

Oracle 中left join,where,group by的用法
在Oracle数据库系统中,理解和正确使用左连接(LEFT JOIN)、筛选(WHERE)和分组(GROUP BY)是编写高效SQL查询的关键技能。以下是这些操作的使用方法和示例。左连接(LEFT JOIN)用于查询两个表中的匹配数据,无论另一表中的数据是否存在。它确保了所有来自左表(表_1)的行在结果集中都存在,即使没...

Oracle,SQL语句中对错误提示:不是单组分组函数的
在Oracle和SQL语句中,当执行如下的查询:sql SELECT deptno, MAX(count(*))FROM emp GROUP BY deptno 实际上,这里的 `MAX(count(*))` 实际上是进行了两次分组操作。第一次是对 `deptno` 进行分组,第二次是对每个部门内的所有记录计数。这可能导致误解,因为 `max()` 函数通常用于单个分组结果...

sql语句中group by,聚合函数的使用。单行子查询返回多行怎么办?求解答...
(1)联合查询(oracle写法,如为其他数据库自行修改,这里只提供思路)select table.id,table.XXXXX,table.XXXXX,table.caption,table.XXXXX from table,(select id,max(caption) max_cap from table group by id) b where table.id=b.id and table.caption=b.max_cap (2)组合查询 select * from...

oracle数据库中group by 1 是什么意思?
group by 1是指第一列,结果中的第一列,以他作为分组,说白了就是去除第一列重复值

oracle中,还是不甚明白order by和group by的用法
group by 是分组 首先用group by 的前提是你的select里边用了聚合函数如sum(),avg(),min(),max()没有聚合函数用不了group by会报错 其次 出现在select里边的除聚合函数以外的所有字段 都必须作为group by的条件 出现在group by中的字段可以不select出来 也就是说 select中的字段必须出现在group by...

相似回答