使用sql计算已预订的总金额和已收取的总金额

使用sql计算已预订的总金额和已收取的总金额,sql,oracle,Sql,Oracle,我想显示度假村id、度假村名称、每个度假村的预订数量以及在每个度假村收取的总金额。为此,我有一段代码如下: select r.resortid, r.resortname, count(b.bookingid) as totalbooking, sum(b.totalcharge) as totalamount from resort r inner join booking b on r.resortid = b.resortid group by b.resortid orde

我想显示度假村id、度假村名称、每个度假村的预订数量以及在每个度假村收取的总金额。为此,我有一段代码如下:

select r.resortid, r.resortname, count(b.bookingid) as totalbooking, sum(b.totalcharge) as totalamount
 from resort r inner join booking b 
 on r.resortid = b.resortid  
 group by b.resortid
 order by b.resortid;

但是这段代码给出了一个错误,声明“不是一个表达式分组”。请帮我度过难关,并提前感谢

只需添加其他未聚合的列:

select r.resortid, r.resortname,
       count(b.bookingid) as totalbooking, 
       sum(b.totalcharge) as totalamount
from resort r inner join
     booking b 
     on r.resortid = b.resortid  
group by r.resortid, r.resortname
order by r.resortid;
请注意,
groupby
列与
select
中的未聚合列相匹配。特别是,
分组依据
排序依据
使用
r.restorid
,而不是
b.restorid

您还可以使用聚合函数:

select r.resortid, max(r.resortname) as resortname,
       count(b.bookingid) as totalbooking, 
       sum(b.totalcharge) as totalamount
from resort r inner join
     booking b 
     on r.resortid = b.resortid  
group by r.resortid
order by r.resortid;