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

PostgreSQL如何按客户产品数量、产品字母序排序输出所有行

解决方案

你可以用PostgreSQL的窗口函数实现需求,无需额外嵌套关联,语法简洁高效:

SELECT "Customer", "Product"
FROM 你的表名 -- 替换为实际表名
ORDER BY
  -- 第一排序规则:按客户关联的产品总数降序
  COUNT(*) OVER (PARTITION BY "Customer") DESC,
  -- 第二排序规则:同客户下产品按字母升序
  "Product" ASC;

如果更习惯用子查询先统计数量再关联排序,也可以用下面的写法,效果一致:

SELECT t."Customer", t."Product"
FROM 你的表名 t
INNER JOIN (
  SELECT "Customer", COUNT(1) AS product_count
  FROM 你的表名
  GROUP BY "Customer"
) AS customer_stat ON t."Customer" = customer_stat."Customer"
ORDER BY customer_stat.product_count DESC, t."Product" ASC;

说明

  • 窗口函数COUNT(*) OVER (PARTITION BY "Customer")会逐行计算当前行所属客户的关联产品总数,不需要提前分组聚合再关联,性能更优。
  • 字段名加双引号是适配PostgreSQL对大小写敏感的字段命名规则,如果你的表字段是小写命名,去掉双引号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:39:02