我有一个有 4 张桌子的数据库:预订、酒店、客人和房间。我试图让我的 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');
我的陈述结构是否不正确?我可以做些什么来解决这个问题?希望我提供了足够的信息。