PostgreSQL问题的COUNT DISTINCT CASE表达式

lndjwyie  于 2023-03-17  发布在  PostgreSQL
关注(0)|答案(2)|浏览(129)

我试图计算position_id的唯一值,同时在另一列中满足另一个条件“true”。我不断地得到返回的所有值,因为我正在计算它们。

COUNT(DISTINCT CASE WHEN p.position_id IS NOT NULL THEN 1
    WHEN internal_only = 'true' THEN 1 ELSE 0 END) AS I_Roles

任何帮助都将不胜感激。

mo49yndu

mo49yndu1#

您可以使用筛选聚合:

count(distinct position_id) filter (where internal_only = 'true')
wz3gfoph

wz3gfoph2#

可以使用以下公式计算internal_only的真值:

count(distinct case when internal_only = 'true' then p.position_id end)

相关问题