以grafana中逗号分隔的形式显示列值



我有一个有2列的表

organization_id | user_name
1 | abc
1 | xyz
2 | bhi
2 | ipq
2 | sko
3 | ask
...

每个组织可以有从1到100、2000等任意数量的用户。我想在格拉法纳的一张表中展示它们,如下所示:

organization_id | user_name
1 | abc, xyz
2 | bhi, ipq, sko
3 | ask

由于可能有很多用户,我想显示属于同一组织的任意10个用户。

这里的数据库是时间刻度数据库,该表也是一个时间序列表,显示用户何时注册

如果我正确理解每个组织需要10个用户,那么可以使用下面的查询
我在CTE中添加了group by,以避免返回重复的user_name
在测试架构中,组织2有重复的'pqr'值,但此用户名只返回一次,即使2的用户名少于10
测试架构db Fiddle此处

With topTen as
(Select
Organisation_id,
User_name,
Rank() over (
partition by organisation_id 
order by user_name) rn
From table_name 
group by 
Organisation_id,
user_name)
Select
Organisation_id,
String_agg(user_name,',') users
From topTen
Where rn <= 10
group by Organisation_id;
organization_id|用户--------------:|:--------------------------------------1|abc、abk、def、ghi、jkl、mno、pqr、rst、ruk、stu2|abk,pqr,rst,ruk,stu,vwx

另一种可能有用的替代方案。如果删除where并将以下内容放在From topTen之后,您将获得所有不同的user_name,每行10个。

group by Organisation_id,rn/10
order by Organisation_id,rn/10;

db<gt;小提琴这里

最新更新