You need to enable JavaScript to run this app. 如何用SELECT语句查询bookingxx表中预订次数最多的客户姓名
优惠活动
大模型
产品
解决方案
定价
更多

如何用SELECT语句查询bookingxx表中预订次数最多的客户姓名

实现查询预订次数最多的客户姓名的SQL方案

你之前用GROUP BY没有得到正确结果,大概率是分组条件设置错误,或者没有配套的最大值匹配逻辑,以下是两种可直接运行的实现方案:

通用SQL写法(兼容所有主流数据库)

SELECT BookingFirstname AS 名, BookingLastname AS 姓
FROM bookingxx
GROUP BY BookingFirstname, BookingLastname
HAVING COUNT(*) = (
    SELECT MAX(booking_cnt)
    FROM (
        SELECT COUNT(*) AS booking_cnt
        FROM bookingxx
        GROUP BY BookingFirstname, BookingLastname
    ) AS cnt_table
);

窗口函数写法(适用MySQL8.0+/PostgreSQL/SQL Server等支持CTE和窗口函数的数据库)

WITH user_booking_cnt AS (
    SELECT 
        BookingFirstname AS 名,
        BookingLastname AS 姓,
        COUNT(*) AS booking_cnt,
        RANK() OVER(ORDER BY COUNT(*) DESC) AS rk
    FROM bookingxx
    GROUP BY BookingFirstname, BookingLastname
)
SELECT 名, 姓 FROM user_booking_cnt WHERE rk = 1;

逻辑说明

  • 首先以姓名组合作为分组维度,统计每个客户的预订总次数
  • 两种写法都支持返回并列第一的所有客户,不会出现同次数只返回一个的问题
  • 你提供的测试数据中所有客户都仅有1次预订,执行SQL会返回全部10条客户记录,可自行添加重复客户的预订数据验证逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:36:04