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

MySQL中无重复计算给定数字因数个数及票务订单分组统计问题

Q2: 票务订单按售票数量分组,统计5张装、3张装及单独票数量

从你的例子和现有代码来看,核心是优先用最大包装(5张装),剩余数量再用3张装,最后剩下的就是单独票,这个逻辑可以用整数除法和取余运算直接实现,比CASE WHEN更简洁高效。

假设你的订单表是ticket_orders,包含ticket_qty(每单售票数量)字段,完整的分组统计SQL如下:

SELECT
  ticket_qty AS per_order_tickets,
  -- 5张装数量:总数量除以5取整
  FLOOR(ticket_qty / 5) AS fivepack,
  -- 3张装数量:总数量模5后,剩余部分除以3取整
  FLOOR((ticket_qty % 5) / 3) AS threepack,
  -- 单独票数量:总数量模5后再模3的余数
  (ticket_qty % 5) % 3 AS singles,
  -- 可选:统计该售票数量对应的订单总数
  COUNT(*) AS total_orders
FROM ticket_orders
GROUP BY ticket_qty
ORDER BY ticket_qty;

验证一下你的例子:当ticket_qty=27时,27/5=5(5张装数量),27%5=2,2/3=0(3张装数量),2%3=2(单独票数量),完全符合你给出的结果。

再举几个测试案例:

  • 数量11:11/5=2,11%5=1,1/3=0,1%3=1 → 2份5张装,0份3张装,1张单独票
  • 数量8:8/5=1,8%5=3,3/3=1,3%3=0 →1份5张装,1份3张装,0张单独票
  • 数量7:7/5=1,7%5=2,2/3=0,2%3=2 →1份5张装,0份3张装,2张单独票

完全符合业务逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:48:02