我有以下几行:
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
错误:
无法累积不同维度的数组
答案 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不是最佳选择。