与array_agg文本字段

时间:2017-10-10 15:51:41

标签: sql postgresql

我有以下几行:

order items_ordered
1     'tshirt,shorts'
1     'shoes,flipflops,'shorts'
2     'dress'

我想根据订购的唯一商品的订单和数量进行分组(PostgreSQL)。

结果:

1  4
2  1

由于'T恤,短裤,鞋子,人字拖鞋',订单1有四个独特的商品。

我试过了:

select

distinct array_agg(regexp_split_to_array(items_ordered, ','))

from ALL_FINAL
group by order

错误:

  

无法累积不同维度的数组

1 个答案:

答案 0 :(得分:0)

您可以将LATERAL与unnested数组结合使用:

select "order", COUNT(DISTINCT c) AS cnt
from ALL_FINAL
,LATERAL (SELECT unnest(regexp_split_to_array(items_ordered, ','))) s(c)
group by "order";

<强> Rextester Demo

无论如何,您应该重新考虑您的架构设计。将值存储为CSV不是最佳选择。

相关问题