0

我对我一直在处理的一个问题感到有点困惑,希望能得到一些帮助。我相信我应该使用 HAVING 子句,但不知道如何让它正常工作。与显示几个成员相反,它显示 1 个成员并将所有内容相加。

查询应列出总明细租金高于整体平均明细租金两倍的每个客户。输出应按会员编号排序。

Mem_num mem_fname mem_lname Total)detail_fee 103 Curt Knight 7.50 105 Iva Mclain 7.00 110 Lewis Rossale 9.00 111 Stacy Mann 9.00

select m.mem_num, mem_fname, mem_lname, sum(detail_fee), avg(detail_fee)
from membership as m, rental as r
left outer join detailrental as d on (r.rent_num = d.rent_num)
group by detail_fee
having sum(detail_fee);
4

1 回答 1

0
select m.mem_num, mem_fname, mem_lname, sum(detail_fee) as sum_fee, avg(detail_fee) as avg_fee
from membership as m, rental as r
left outer join detailrental as d on (r.rent_num = d.rent_num)
group by mem_num
having sum_fee > 2 * avg_fee;

上面的查询比你的更“正确”。问题是这样的:

from membership as m, rental as r

这是一个交叉连接。意思是,会员中的每一行都与出租中的每一行相关联。我猜这会给你错误的结果。这两张表之间没有联系吗?就像是

from membership as m 
inner join rental as r 
on m.id = r.member_id

?

于 2012-04-13T14:35:05.897 回答