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

PostgreSQL查询需求:筛选主副账户不同且成本含正负值的行

正确的PostgreSQL查询语句

针对你的需求,这里提供两种可行的查询方式:

方式一:使用子查询筛选符合条件的主账户

SELECT *
FROM your_table
WHERE Master_Account != Sub_Account
AND Master_Account IN (
    SELECT Master_Account
    FROM your_table
    GROUP BY Master_Account
    -- 筛选出同时存在正Cost和负Cost的主账户
    HAVING COUNT(CASE WHEN Cost > 0 THEN 1 END) > 0
       AND COUNT(CASE WHEN Cost < 0 THEN 1 END) > 0
);

方式二:使用窗口函数(单表扫描更高效)

SELECT Master_Account, Sub_Account, Cost
FROM (
    SELECT *,
           -- 标记当前主账户是否存在正Cost
           MAX(CASE WHEN Cost > 0 THEN 1 ELSE 0 END) OVER (PARTITION BY Master_Account) AS has_positive,
           -- 标记当前主账户是否存在负Cost
           MAX(CASE WHEN Cost < 0 THEN 1 ELSE 0 END) OVER (PARTITION BY Master_Account) AS has_negative
    FROM your_table
    WHERE Master_Account != Sub_Account
) filtered
WHERE has_positive = 1 AND has_negative = 1;

逻辑说明

你最初的查询语句存在逻辑错误:exists (cost > 0 and cost < 0)是判断单行数据的Cost同时大于0和小于0,这在实际数据中不可能成立,因此无法得到预期结果。正确的逻辑是对每个Master_Account整体判断,确认其下同时存在正、负Cost的子账户,再筛选出其中Master_Account与Sub_Account不同的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:36:09