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

如何通过Partition by与Order by实现按Title分组、Active及Expire_date排序?

正确SQL实现方案

根据你的需求,同时满足同Title记录分组显示、Active排序、Expire_date排序三个要求的SQL写法如下:

SELECT *
FROM `table`
ORDER BY
  -- 按每个Title组的最大过期日期升序,确定各组的排列顺序
  MAX(`Expire_date`) OVER (PARTITION BY `Title`),
  -- 组内先按Active降序,确保Active=1的记录排在同组Active=0的前面
  `Active` DESC,
  -- 组内同Active的记录,按过期日期降序排列
  `Expire_date` DESC;

逻辑说明:

  1. 组排序:通过窗口函数 MAX(Expire_date) OVER (PARTITION BY Title) 计算每个Title组的最大过期日期,以此作为组的排序依据升序排列,完全匹配你期望结果中Fruit_999→Orange→Banana→Apple的组顺序。
  2. 组内Active排序:Active DESC 确保同组内Active=1的记录优先显示,对应你期望中Banana、Apple组内Active=1记录在前的要求。
  3. 组内日期排序:Expire_date DESC 让同组同Active的记录按日期从新到旧排列,符合你期望中Apple组内Active=0记录2021→2020的顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:55:13