Sum(Max())子查询

时间:2012-12-02 20:22:51

标签: sql oracle

我正在尝试仅为求和列选择MAX值

select rental.member_id,
       rental.rental_id,
       sum(rental_line.Qty) as TotalRentals
  from Rental 
 INNER JOIN rental_line 
    on rental.rental_id =rental_line.rental_id 
where MONTHS_BETWEEN(sysdate, datein)<(12)
group by rental.member_id, 
         rental.rental_id, 
         SUM(TotalRentals) =  MAX(SUM(TotalRentals));

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以按TotalRentals(3)降序排序查询的结果集,然后使用rownum伪列获取第一行:

select member_id
     , rental_id
     , TotalRentals
  from ( select rental.member_id
              , rental.rental_id
              , sum(rental_line.Qty) as TotalRentals
           from Rental 
          INNER JOIN rental_line 
             on rental.rental_id =rental_line.rental_id 
          where MONTHS_BETWEEN(sysdate, datein)<(12)
          group by rental.member_id, 
                   rental.rental_id
          order by 3 desc
      ) 
where rownum = 1