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

PostgreSQL:子查询与Having子句下如何获取符合条件的总数而非个体计数

问题解决:统计符合条件的记录总数

表结构与数据

mrnopatencounterid
N2338
N2339
N2340

需求

统计patencounterid大于对应mrno最小patencounterid的记录总数,预期结果为2(对应39、40两条记录)。

原SQL问题

原SQL使用GROUP BY patencounterid,会将每个不同的patencounterid单独分组,符合条件的39和40各成一组,每组COUNT(mrno)结果都是1,因此返回两行值为1的结果,不符合需求。

修改后的SQL方案

方案1:直接过滤统计(针对单个mrno)

SELECT COUNT(*)
FROM billingpatencounter
WHERE mrno = 'N23'
AND patencounterid > (SELECT MIN(patencounterid)
                      FROM billingpatencounter
                      WHERE mrno = 'N23');

该语句直接筛选出mrno='N23'且patencounterid大于该mrno最小id的记录,再统计总数,返回结果为2。

方案2:适配多mrno场景(可扩展)

如果需要同时统计多个mrno的符合条件记录数,可先计算每个mrno的最小patencounterid,再关联原表统计:

SELECT COUNT(*)
FROM billingpatencounter b
INNER JOIN (
    SELECT mrno, MIN(patencounterid) AS min_patencounterid
    FROM billingpatencounter
    GROUP BY mrno
) m ON b.mrno = m.mrno
WHERE b.patencounterid > m.min_patencounterid
AND b.mrno = 'N23';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:42:24