0

私は取り組んでいる問題に少し行き詰まっており、助けていただければ幸いです。HAVING 句を使用する必要があると思いますが、適切に機能させる方法がわかりません。複数のメンバーを表示するのではなく、1 つのメンバーを表示してすべてを合計します。

クエリでは、詳細レンタル料金の合計が全体の平均詳細レンタル料金の 2 倍を超える各顧客をリストする必要があります。出力は会員番号でソートする必要があります。

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

これはクロス結合です。つまり、メンバーシップの各行は、レンタルの各行に接続されています。これにより、間違った結果が得られると思います。これらの 2 つのテーブルの間に接続はありませんか? 何かのようなもの

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

?

于 2012-04-13T14:35:05.897 に答える