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

PostgreSQL中Row_number() over条件用法:分区优先用code缺省用new_code

PostgreSQL查询调整方案

该需求完全可实现,你可以使用PostgreSQL内置的COALESCE函数完成逻辑适配,该函数会按参数传入顺序返回第一个非NULL的值,刚好匹配你优先使用code、code缺失时自动取new_code的规则。

调整后的基础查询代码

with cte as (select *,
                        row_number() over (partition by COALESCE(code, new_code) order by price) rn_low,
                        row_number() over (partition by COALESCE(code, new_code) order by price DESC) rn_high
    from t

空字符串场景适配

如果你的业务定义中,code为空字符串''也属于「无有效值」的范围,COALESCE仅能识别NULL值,此时可改用CASE表达式实现逻辑:

with cte as (select *,
                        row_number() over (partition by CASE WHEN code IS NULL OR code = '' THEN new_code ELSE code END order by price) rn_low,
                        row_number() over (partition by CASE WHEN code IS NULL OR code = '' THEN new_code ELSE code END order by price DESC) rn_high
    from t

以上两种写法都不会影响后续对rn_low、rn_high字段的筛选、判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:05