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

PostgreSQL如何编写查询实现类似Excel的重复值仅首行展示效果

PostgreSQL实现重复分组字段仅首行展示的查询方案

你需要的效果可以通过窗口函数+条件判断实现,核心思路是给同组的行编序号,仅序号为1的行返回分组字段原值,其余行返回空值,具体SQL如下:

SELECT 
    c_id,
    -- 仅组内第一行展示n_id
    CASE WHEN row_num = 1 THEN n_id ELSE NULL END AS n_id,
    -- 仅组内第一行展示b_id
    CASE WHEN row_num = 1 THEN b_id ELSE NULL END AS b_id
FROM (
    SELECT
        c_id,
        n_id,
        b_id,
        -- 按n_id、b_id分组,组内按c_id降序排序后编号,可根据业务调整排序规则
        ROW_NUMBER() OVER (PARTITION BY n_id, b_id ORDER BY c_id DESC) AS row_num
    FROM data_test
) AS temp
-- 最终结果排序可根据业务需求调整
ORDER BY n_id DESC, c_id DESC;

逻辑说明

  • 内层子查询使用PARTITION BY将n_id、b_id取值完全相同的行归为同一分组,你可以根据实际业务需求调整分组字段
  • ROW_NUMBER()会给每个分组内的行按ORDER BY指定的规则生成从1开始的连续序号,可更换排序字段匹配业务排序规则
  • 外层查询通过CASE判断,只有组内序号为1的行才返回n_id、b_id的原值,其余行返回空值,即可实现和Excel一致的仅首行展示重复值的效果

内容的提问来源于stack exchange,提问作者菜合馍馍

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:54:00