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
我有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