予約、ホテル、ゲスト、部屋の4つのテーブルを持つDBがあります。各ホテルの平均宿泊料金を生成する SQL ステートメント (Oracle) を取得しようとしています。これは現在私が持っているものです:
SELECT HOTEL.H_NAME "HOTEL NAME", ROUND(AVG (R_PRICE), 1) "AVERAGE ROOM PRICE"
FROM ROOM, HOTEL
WHERE HOTEL.H_NAME = 'Shangra_La'
OR HOTEL.H_NAME = 'Hilton'
OR HOTEL.H_NAME = 'Sheraton'
GROUP BY HOTEL.H_NAME
ORDER BY HOTEL.H_NAME;
私が考えたところ、そのステートメントは「Shangra_la」、「Hilton」、「Sheraton」のすべての部屋のホテル名と平均価格を選択し、ホテルの名前で並べ替えますが、これを行うと、間違っている各ホテルの同じ平均。これは私の出力です:
H_NAME AVG. R_PRICE
Hilton 253.5
Shangra_La 253.5
Sheraton 253.5
以下は、ROOM のテーブル データです。
insert into room values
('1','H100','S',220.00);
insert into room values
('2','H100','D',230.00);
insert into room values
('3','H100','F',310.00);
insert into room values
('1','H200','S',260.00);
insert into room values
('2','H200','D',170.00);
insert into room values
('3','H200','S',250.00);
insert into room values
('4','H200','F',180.00);
insert into room values
('5','H200','F',295.00);
insert into room values
('1','H300','D',200.00);
insert into room values
('2','H300','S',420.00);
とホテル:
insert into hotel values
('H100','Sheraton','Melbourne');
insert into hotel values
('H200','Shangra_La','Sydney');
insert into hotel values
('H300','Hilton', 'Perth');
ステートメントの構造が間違っていませんか? この問題を解決するにはどうすればよいですか? うまくいけば、私は十分な情報を提供しました。