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

PostgreSQL中使用DISTINCT ON时如何返回各区域客户数量?

为PostgreSQL的DISTINCT ON查询添加区域客户数量统计

原查询通过DISTINCT ON (region)配合排序逻辑,能精准获取每个区域消费最高的顶级客户。要给结果加上各区域的客户总数,不需要额外做GROUP BY或者子查询关联,用PostgreSQL的窗口函数就能直接实现,且效率更高。

修改后的完整查询语句:

-- 获取各区域顶级客户及对应区域客户总数
SELECT DISTINCT ON (region)
       *,
       COUNT(*) OVER (PARTITION BY region) AS region_customer_count
FROM customers
ORDER BY region, total_purchases DESC;

关键说明:

  • COUNT(*) OVER (PARTITION BY region):这个窗口函数会以region为分组依据,计算每个区域内的客户总数,然后把这个统计值附加到该区域的每一行数据上。
  • 结合DISTINCT ON (region)的逻辑,最终结果里每个区域只会保留消费最高的那一条客户数据,同时带上该区域的总客户数,完全符合需求。

如果后续有过滤条件(比如只统计活跃客户),只需要在FROM子句后添加WHERE条件即可,窗口函数会自动基于过滤后的数据集计算统计值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:24:53