基本总和和分组

时间:2015-04-06 02:24:30

标签: sql sql-server group-by

我有一个基本的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
)

3 个答案:

答案 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