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

PostgreSQL如何合并两次查询为单条计算客户最近两笔销量总和

PostgreSQL单条合并查询实现方案

最终查询语句

SELECT
  partner_id,
  SUM(product_qty) AS 总和
FROM (
  SELECT
    sl.partner_id,
    sl.product_qty,
    -- 按合作方ID分组,组内按订单时间倒序编号
    ROW_NUMBER() OVER (PARTITION BY sl.partner_id ORDER BY sl.order_date DESC) AS row_num
  FROM trip_delivery_sales_lines sl
  WHERE
    sl.route_id = '152'
    AND sl.product_id = '432'
    -- 过滤第一段查询得到的合作方ID
    AND sl.partner_id IN (
      SELECT partner_id
      FROM trip_delivery_sales ts
      WHERE ts.route_id = '152'
      GROUP BY ts.partner_id
    )
) t
WHERE row_num <= 2 -- 仅取每个合作方最近2笔订单
GROUP BY partner_id;

逻辑说明

  • 内层子查询通过IN条件关联第一段查询的结果,筛选出符合要求的所有partner_id对应的订单记录
  • 窗口函数ROW_NUMBER()实现按partner_id分组,每组内按order_date倒序排序,给每笔订单生成行号,保证时间最新的订单行号最小
  • 外层过滤出行号小于等于2的记录,按partner_id分组求和product_qty,即可得到每个合作方最近两笔符合条件的销量总和

可选调整

  • 如果需要输出Mn2333 - 7格式的结果,将外层SELECT语句替换为:SELECT CONCAT(partner_id, ' - ', SUM(product_qty)) AS 结果即可
  • 如果要求仅统计至少有2笔符合条件订单的合作方,可以在外层GROUP BY后添加条件:HAVING COUNT(*) = 2
  • 如果存在多笔订单order_date完全相同的场景,可将ROW_NUMBER()替换为RANK()或DENSE_RANK(),调整同时间订单的计数规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:36:07