You need to enable JavaScript to run this app. SQL中如何按CustomerID和Level分组取最小Order#生成等级首订单表
优惠活动
大模型
产品
解决方案
定价
更多

SQL中如何按CustomerID和Level分组取最小Order#生成等级首订单表

实现方案

核心逻辑

需求拆解为两步执行:

  1. 按CustomerID、Level分组聚合,取每组最小的Order#,即筛选出每个客户每个等级首次达成的订单
  2. 将上一步的结果通过条件聚合行转列,把不同等级的订单号拆分为独立列展示

通用SQL实现(兼容所有主流数据库,可直接替换表名后运行)

SELECT
  CustomerID,
  MIN(CASE WHEN Level = 3 THEN first_order END) AS `Level 3`,
  MIN(CASE WHEN Level = 4 THEN first_order END) AS `Level 4`,
  MIN(CASE WHEN Level = 5 THEN first_order END) AS `Level 5`
FROM (
  -- 子查询:获取每个客户各等级的最小订单号
  SELECT
    CustomerID,
    Level,
    -- 若Order#为字符串类型,必须转数值再取最小,避免字典序排序错误
    MIN(CAST(`Order#` AS INT)) AS first_order
  FROM 你的真实表名 -- 替换为实际存储数据的表名
  GROUP BY CustomerID, Level
) AS customer_level_order
GROUP BY CustomerID

补充说明

  • 若Order#本身就是数值类型,可去掉CAST转换逻辑,直接写为MIN(\Order#`)`即可
  • 若客户未达到对应等级,对应列默认返回NULL,需要替换为默认值(如0)时,可用COALESCE(对应列, 替换值)包裹对应字段
  • 运行结果完全匹配给出的样例输出,无冗余数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 11:15:04