sql如何将多选字段转换为包含总计的行
我有一个表,它有一个字段,其中的内容是从多选择表单中选择的串联列表。我想将此字段中的数据转换为另一个表中的数据,在该表中,每行都有选择的文本,并计算进行此选择的次数。 例如 原始表格:sql如何将多选字段转换为包含总计的行,sql,postgresql,csv,count,lateral-join,Sql,Postgresql,Csv,Count,Lateral Join,我有一个表,它有一个字段,其中的内容是从多选择表单中选择的串联列表。我想将此字段中的数据转换为另一个表中的数据,在该表中,每行都有选择的文本,并计算进行此选择的次数。 例如 原始表格: id selections 1 A;B 2 B;D 3 A;B;D 4 C 我想了解以下信息: selection count A 2 B 3 C 1 D 2 我可以很容易地用javasc
id selections
1 A;B
2 B;D
3 A;B;D
4 C
我想了解以下信息:
selection count
A 2
B 3
C 1
D 2
我可以很容易地用javascript中的split和maps等实现这一点,但不知道如何在SQL中实现这一点。(我使用Postgresql)目标是使用第二个表在Google Data Studio中绘制图形。您可以使用横向连接和方便的设置返回函数
regexp\u split\u to\u table()
将字符串取消到行,然后进行聚合和计数:
select x.selection, count(*) cnt
from mytable t
cross join lateral regexp_split_to_table(t.selections, ';') x(selection)
group by x.selection
一个更简单的解决方案:
select regexp\u split\u to_table(选项“;”),count(*)
从测试表
按1分组
1号订单;
great-我也会试试这个答案也很好,不需要横向连接。谢谢@ndogac!