取消嵌套 PostgreSQL 中的行并包括取消嵌套次数
Unnest row in PostgreSQL and include count of unnesting occurrences
继 Matt 在以下内容中的回答:
我想根据单元格中的一个字符将一行取消嵌套成多行,但是我还想包括一个计数列,其中包含一行被取消嵌套的次数。
我想要这个:
name | id
-----------------------+------
alpha, bravo, charlie | 1
yankee, xray | 2
hotel | 3
indigo | 4
变成这样:
name | id | count
-----------------------+------+-------
alpha | 1 | 3
bravo | 1 | 3
charlie | 1 | 3
yankee | 2 | 2
xray | 2 | 2
hotel | 3 | 1
indigo | 4 | 1
最初的 unnest 查询是:
SELECT unnest(string_to_array(name, ', ')) as name, id
FROM table
您可以将 cross join
与正则表达式一起使用:
select k, t.id, cardinality(regexp_split_to_array(t.name, ', '))
from tbl t cross join regexp_split_to_table(t.name, ', ') k
继 Matt 在以下内容中的回答:
我想根据单元格中的一个字符将一行取消嵌套成多行,但是我还想包括一个计数列,其中包含一行被取消嵌套的次数。
我想要这个:
name | id
-----------------------+------
alpha, bravo, charlie | 1
yankee, xray | 2
hotel | 3
indigo | 4
变成这样:
name | id | count
-----------------------+------+-------
alpha | 1 | 3
bravo | 1 | 3
charlie | 1 | 3
yankee | 2 | 2
xray | 2 | 2
hotel | 3 | 1
indigo | 4 | 1
最初的 unnest 查询是:
SELECT unnest(string_to_array(name, ', ')) as name, id
FROM table
您可以将 cross join
与正则表达式一起使用:
select k, t.id, cardinality(regexp_split_to_array(t.name, ', '))
from tbl t cross join regexp_split_to_table(t.name, ', ') k