当我提出这个要求时:
SELECT mycol FROM mytable WHERE mycol IS NOT NULL;
我得到这样的结果:
foo / bar / hello
foo / hello
foo / bar
每行都有用/
(空格、斜线、空格)分隔的值。
如何使用 count 创建具有唯一值列表的视图?
bar 2
foo 3
hello 2
当我提出这个要求时:
SELECT mycol FROM mytable WHERE mycol IS NOT NULL;
我得到这样的结果:
foo / bar / hello
foo / hello
foo / bar
每行都有用/
(空格、斜线、空格)分隔的值。
如何使用 count 创建具有唯一值列表的视图?
bar 2
foo 3
hello 2
您可以使用横向连接将字符串拆分为行regexp_split_to_table()
,然后聚合:
select x.val, count(*) cnt
from mytable t
cross join lateral regexp_split_to_table(t.mycol, '\s/\s') as x(val)
group by x.val
值 | cnt :---- | --: 酒吧 | 2 富 | 3 你好 | 2
您可以使用 和 的组合string_to_array
来unnest
实现此目的。
试试下面的查询
select
unnest(string_to_array(mycol,' / ')), count(*)
from mytable
where mycol IS NOT NULL
group by 1