微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组 – postgres:如何在给定条件的情况下计算数组列中的不同元素

我有一个如下表:

ID     array1           array2
7333 | {615593}        | {NULL}
7333 | {2013682}       | {NULL}
7333 | {26573,1508291} | {NULL}
7333 | {1457957}       | {NULL}
7333 | {NULL}          | {1063105}
7333 | {NULL}          | {107978,408431}

我期待查询每个edge_id的array1和array2的所有唯一项.例如

ID   array1_distinct    array2_distinct
7333 5                  3

我尝试过类似下面的内容

SELECT 
  id,array1_count 
FROM (
  SELECT id,COUNT(disTINCT((CASE WHEN array1 is not null THEN (select unnest(array1)b) END)) as array1_count
  FROM mytable
  GROUP BY id
) totals
limit 1

我总是会遇到错误,例如“用作表达式的子查询返回的多行”和“在使用unfst时尝试计算数组中的元素时在上下文中调用的集值函数”.

解决方法

select id,count(distinct a1) as a1,count(distinct a2) as a2
from (
    select id,unnest(array1) as a1,unnest(array2) as a2
    from t
) s
group by id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐