You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL查询伦敦各酒店最常被预订的房型?

嘿,这个需求我太熟了!你现在的代码能算出每家酒店各房型的预订次数,接下来只要给每个酒店下的房型按预订量排个序,挑出排名第一的就行。下面给你两种实用的实现方式,适配不同的SQL环境:

方法一:用窗口函数(推荐,适合现代SQL数据库)

如果你的数据库支持窗口函数(比如MySQL 8+、PostgreSQL、SQL Server等),这是最简洁高效的写法:

-- 第一步:统计伦敦每家酒店每个房型的预订次数
WITH RoomBookCounts AS (
    SELECT 
        h.hotelno,
        b.type,
        COUNT(*) AS book_count
    FROM bookings b
    JOIN hotels h ON b.hotelno = h.hotelno
    WHERE h.city = 'London'
    GROUP BY h.hotelno, b.type
),
-- 第二步:给每家酒店的房型按预订量降序排名
RankedRooms AS (
    SELECT 
        hotelno,
        type,
        book_count,
        -- 按酒店分组,预订次数高的排前面
        -- 若要保留并列最高的房型,把ROW_NUMBER换成RANK()/DENSE_RANK()
        ROW_NUMBER() OVER (PARTITION BY hotelno ORDER BY book_count DESC) AS rank_num
    FROM RoomBookCounts
)
-- 第三步:筛选每家酒店排名第一的房型
SELECT 
    hotelno,
    type AS most_booked_room_type,
    book_count AS total_bookings
FROM RankedRooms
WHERE rank_num = 1;

说明:

  • ROW_NUMBER():如果同一家酒店有多个房型预订量相同,只会返回其中一个(随机);
  • RANK()/DENSE_RANK():如果有并列最高的房型,会全部返回,按需选择即可。
方法二:兼容老版本SQL的子查询写法

如果你的数据库不支持窗口函数(比如MySQL 5.x),可以用嵌套子查询实现:

SELECT 
    rbc.hotelno,
    rbc.type AS most_booked_room_type,
    rbc.book_count AS total_bookings
FROM (
    -- 先统计各酒店各房型的预订次数
    SELECT 
        h.hotelno,
        b.type,
        COUNT(*) AS book_count
    FROM bookings b
    JOIN hotels h ON b.hotelno = h.hotelno
    WHERE h.city = 'London'
    GROUP BY h.hotelno, b.type
) rbc
-- 关联每家酒店的最大预订次数,筛选出匹配的房型
INNER JOIN (
    SELECT 
        hotelno,
        MAX(book_count) AS max_book_count
    FROM (
        SELECT 
            h.hotelno,
            COUNT(*) AS book_count
        FROM bookings b
        JOIN hotels h ON b.hotelno = h.hotelno
        WHERE h.city = 'London'
        GROUP BY h.hotelno, b.type
    ) sub
    GROUP BY hotelno
) max_counts ON rbc.hotelno = max_counts.hotelno AND rbc.book_count = max_counts.max_book_count;

注意事项:

  • 记得把代码里的bookings(预订表)、hotels(酒店表)换成你实际使用的表名;
  • 确保hotelno(酒店编号)、type(房型)是正确的分组字段,避免统计错误。

内容的提问来源于stack exchange,提问作者ZPC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:45