Cit*_*ish 2 sql postgresql select subquery aggregate-functions
如果我的子查询foo释放行:
ID, USERS
1 {23129}
2 {23142}
3 {23300,23300}
4 {23129,23300}
Run Code Online (Sandbox Code Playgroud)
如何使用诸如以下的窗口函数来获得查询中的唯一身份用户数:
SELECT ... FROM ( <subquery> ) FOO
Run Code Online (Sandbox Code Playgroud)
我尝试了这个:
array_length(array_agg(array_length(array(SELECT Distinct unnest(users))),1)) over(), 1)
Run Code Online (Sandbox Code Playgroud)
但是会得到数组尺寸不相同的错误
注意:我无法更改子查询来解决此问题。
我可以按以下方式在数组中获取ID:-
string_to_array(string_agg(array_to_string(user_ids, ','), ',') over(),',')
Run Code Online (Sandbox Code Playgroud)
但是它们并没有区别。
您使事情变得过于复杂-您可以取消嵌套该数组,然后从中查询一个不同的计数:
SELECT COUNT(DISTINCT u)
FROM (SELECT UNNEST(users) AS u
FROM mytable) t
Run Code Online (Sandbox Code Playgroud)