我们有一个表为 mylikefruit,其有两列,一列为人名name,一列为该人喜欢的水果组成的数组friuits_array
name | friuits_array |
Joey | {"apple", "banana", "cherry"} |
Chandler | {"apple", "banana"} |
求:统计每类水果各有多少人喜欢
第一步:使用 unnest 函数将列表每个元素解析为新行
name | friuits_array |
Joey | apple |
Joey | banana |
Joey | cherry |
Chandler | apple |
Chandler | banana |
第二步:根据水果分组,去重统计人数即可
代码:
with t1 as(
select
name
,unnest(fruits) AS fruit_name
from mylikefruit
)
select
fruit
,count(distinct name)
from t1
group by fruit
;