我有一个基本的SQL查询问题。我正在使用SQL Server。我是SQL的初学者。
我有3张桌子。最终,我想要制作的是100家酒店的名单(包括他们的ID,名称和地点),销售额最多。
所以我知道我需要按hotel_id
进行分组,总结所有预订值,然后进入前100名。但是,我无法弄清楚如何去做。
非常感谢任何帮助。表格如下:
PLACE(
place_id,
name
)
HOTEL(
hotel_id,
hotel_name
)
BOOKING(
booking_id,
hotel_id,
booking_value
)
答案 0 :(得分:1)
我假设PLACE
应该有HOTEL_ID
将其链接到其他表格。
在按预订价值的SUM订购后选择前100名
这是基于HOTEL_ID
Select top 100 H.HOTEL_ID, H.HOTEL_NAME, P.NAME,
SUM( B.BOOKING_VALUE)
from HOTEL H
inner join BOOKING B on B.HOTEL_ID = H.HOTEL_ID
inner join PLACE P on P.HOTEL_ID = H.HOTEL_ID
group by H.HOTEL_ID, H.HOTEL_NAME, P.NAME
order by SUM(B.BOOKING_VALUE) desc
答案 1 :(得分:0)
如果BOOKING的booking_value是对PLACE的place_id的引用。您可以使用这种方式获得最大的销售额:
SELECT TOP 100 H.hotel_id, H.hotel_name, P.name
FROM HOTEL H
inner join BOOKING B ON B.hotel_id = H.hotel_id
inner join PLACE P ON P.place_id = B.booking_value
GROUP BY H.hotel_id, H.hotel_name, P.name
order by COUNT(*) desc
答案 2 :(得分:0)
SELECT TOP 100 h.hotel_id,h.hotel_name,p.name,SUM(b.booking_value)AS [Total Sales] FROM HOTEL h INNER JOIN PLACE p ON p.place_id=h.place_id
INNER JOIN BOOKING b ON b.hotel_id=h.hotel_id
GROUP BY h.hotel_id,h.hotel_name,p.name
ORDER BY [Total Sales] DESC