表格
select * from hello;
id | name
----+------
1 | abc
2 | xyz
3 | abc
4 | dfg
5 | abc
(5 rows)
查询
select name,count(*) from hello where name in ('abc', 'dfg') group by name;
name | count
------+-------
dfg | 1
abc | 3
(2 rows)
在上面的查询中,我试图获取名称在元组中的行的计数。但是,我想得到id
以及名字的数量。有没有办法可以实现这个目标?感谢
答案 0 :(得分:2)
如果要返回“id”值,则可以使用窗口函数:
select id, name, count(*) over(PARTITION BY name)
from hello
where name in ('abc', 'dfg');
这将返回id值以及每个名称的行数。
答案 1 :(得分:1)
如果要查看每个名称的所有ID,则需要对它们进行汇总:
select name, count(*), array_agg(id) as ids
from hello
where name in ('abc', 'dfg')
group by name;
返回如下内容:
name | count | ids
-----+-------+--------
abc | 3 | {1,3,5}
dfg | 1 | {4}