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

求SQL实现:酒店房间87天住宿的所有可行总价计算方案

酒店住宿组合凑单与总价计算解决思路

1. 数据预处理

  • 按HotelCode、RoomType、AccmdMenTypeCode分组,将同属性组的房间时段数据归集,仅在同组内筛选组合,跨组无需处理
  • 过滤OverlapDaysCount为0的记录,这类时段与目标预订期无重叠,无使用价值
  • 给每组内的记录按时段起始日期排序,便于后续判断时段衔接逻辑(若需考虑入住连续性),或仅提升组合枚举的清晰度

2. 有效组合筛选

  • 单记录达标场景:直接筛选每组内OverlapDaysCount = 87的记录,这类记录可直接覆盖全部预订期,计算总价为OverlapDaysCount * 单价
  • 多记录组合场景:枚举同组内所有记录组合,计算组合的OverlapDaysCount总和,筛选总和等于87的组合:
    • 若要求入住时段无重叠,需额外校验组合内各记录的重叠区间无交集;若仅需凑够天数,无需校验时段重叠
    • 去重重复组合(如记录A+记录B与记录B+记录A视为同一组合,仅保留一次)

3. 总价计算与结果整理

  • 对每个有效组合,计算总价:Σ(单条记录OverlapDaysCount * 对应单价)
  • 按HotelCode、RoomType、AccmdMenTypeCode分组,整理每组内的所有有效总价,按需去重后输出

4. 落地实现参考(以SQL为例)

  • 分组使用GROUP BY HotelCode, RoomType, AccmdMenTypeCode
  • 单记录达标查询:
    SELECT HotelCode, RoomType, AccmdMenTypeCode, OverlapDaysCount * Price AS TotalPrice 
    FROM 房间数据表 
    WHERE OverlapDaysCount = 87
    
  • 多记录组合可通过递归CTE枚举所有可能的组合,累计天数与总价后筛选符合条件的结果;数据量较小时也可使用多次自连接实现
  • 性能优化:先分组再处理,避免全表枚举组合导致的性能损耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:48:16