Postgresql 计数查询

Postgresql count query

我有table这种结构

create table job_tags (
    job_id varchar not null,
    tag varchar(50) not null,

    foreign key (job_id) references jobs(id) on delete cascade,
    unique (job_id, tag)
);

我想执行单个 sql 查询以获取与特定职位相关的标签及其在所有职位中的出现。 现在我有这样的查询显然不起作用 SELECT tag, count(tag) as tagcount FROM job_tags WHERE job_id= GROUP BY tagcount ORDER BY tagcount DESC。它可能 return 只有一个作为标记计数。如果有人知道如何正确构建此查询,我将非常高兴!谢谢

您可以按如下方式使用sub-query

SELECT t.tag, count(*) as tagcount FROM job_tags t
WHERE t.tag in (select tt.tag from job_tags tt where tt.job_id=)
GROUP BY t.tag
ORDER BY tagcount DESC;

我会推荐 group by,并使用 having 子句进行过滤。 Postgres 的布尔聚合函数可以派上用场:

select tag, count(*) as cnt_jobs
from job_tags
group by tag
having bool_or(job_id = )
order by cnt_jobs desc