如何解决SQL如何将多重选择字段转换为总计的行
我有一个表,该表具有一个字段,其中的内容是来自多选表单的选择的串联列表。我想将此字段中的数据转换为另一个表,其中每行都有选择的文本,并计数进行选择的次数。 例如。
原始表:
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和map轻松完成此操作,但不确定如何在SQL中进行处理。 (我使用Postgresql)目标是使用第二个表在Google Data Studio中绘制图形。
解决方法
您可以使用横向连接和方便的集合返回函数regexp_split_to_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_split_to_table(selections,';'),count(*)
from test_table
group by 1
order by 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。