当前位置: 首页 > 面试题库 >

从Postgres中的多行到单列

尤茂材
2023-03-14
问题内容

我正在通过具有只读访问权限的pgAdmin 4使用Postgres 9.5,我正在尝试编写一个select查询,该查询将从这种形式转换数据:

+----------+-------------------+--------------------+----------------+
| username |      filters      |       groups       |     roles      |
+----------+-------------------+--------------------+----------------+
| kd24     | Khaled  <27607>   | V1                 | NewsStand User |
| kd24     | Khaled  <27607>   | V1                 | User           |
| kd24     | Khaled  <27607>   | Weekly KPIs        | NewsStand User |
| kd24     | Khaled  <27607>   | Detailed Sales     | User           |
| kd24     | Khaled  <27607>   | Qanz Monthly Group | User           |
| kd24     | Khaled  <27607>   | Detailed Sales     | NewsStand User |
| kd24     | Khaled  <27607>   | Qanz Monthly Group | NewsStand User |
| kd24     | Khaled  <27607>   | Weekly KPIs        | User           |
| kd24     | Khaled  <F_27607> | Weekly KPIs        | User           |
| kd24     | Khaled  <F_27607> | Weekly KPIs        | NewsStand User |
| kd24     | Khaled  <F_27607> | Qanz Monthly Group | NewsStand User |
| kd24     | Khaled  <F_27607> | Detailed Sales     | User           |
| kd24     | Khaled  <F_27607> | V1                 | User           |
| kd24     | Khaled  <F_27607> | Detailed Sales     | NewsStand User |
| kd24     | Khaled  <F_27607> | Qanz Monthly Group | User           |
| kd24     | Khaled  <F_27607> | V1                 | NewsStand User |
| kd24     | khaled.d          | Weekly KPIs        | User           |
| kd24     | khaled.d          | V1                 | NewsStand User |
| kd24     | khaled.d          | Detailed Sales     | NewsStand User |
| kd24     | khaled.d          | Qanz Monthly Group | NewsStand User |
| kd24     | khaled.d          | Weekly KPIs        | NewsStand User |
| kd24     | khaled.d          | V1                 | User           |
| kd24     | khaled.d          | Detailed Sales     | User           |
| kd24     | khaled.d          | Qanz Monthly Group | User           |
+----------+-------------------+--------------------+----------------+

填写此表格:

+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+
| username |                    filters                    |                       groups                        |        roles        |
+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+
| kd24     |  Khaled  <27607>, Khaled  <F_27607>,khaled.d  | V1, Weekly KPIs, Detailed Sales, Qanz Monthly Group | NewStand User, User |
+----------+-----------------------------------------------+-----------------------------------------------------+---------------------+

请注意,列过滤器,组和角色中的值可能会更改。

可以执行该操作的postgres选择脚本吗?

非常感激!


问题答案:

试试这个

SELECT
    username,
    string_agg(DISTINCT filters,',') as filters,
    string_agg(DISTINCT groups,',') as roles,
    string_agg(DISTINCT roles,',') as groups
FROM
    table1
GROUP BY
    username;

演示版



 类似资料:
  • 问题内容: 我想编写一个SQL Server查询,该查询将从以下示例表中检索数据: 如您所见,SkillLink表的目的是将各种(可能是多个或没有)技能与单个人员匹配。我想通过查询实现的结果是: 因此,对于每个人,我都希望使用逗号连接的所有指向他的SkillName列表。这可能是多种技能,或者根本没有。 这显然不是我正在使用的实际数据,但是结构是相同的。 也请随时为这个问题建议一个更好的标题作为注

  • 问题内容: 我有一张桌子: 我需要在Postgres中进行选择查询,其结果如下: 任何对链接到类似示例的帮助都将不胜感激。 问题答案: 单用加入一个表达这项工作:

  • 问题内容: 我在数据库中有一个表,该表有9列包含相同种类的数据,这些值 允许为null 。我需要将每个非null值选择到单列的值中,这些值不关心它们源自的行的身份。 因此,对于一个看起来像这样的表: 我希望将每个以x开头的值选择到一列中。我得到的数据应如下表所示。需要保留顺序,因此第一行的第一列值应该在顶部,而最后一行的最后列值应该在底部: 我正在使用 SQL Server 2008 R2 。是否

  • 我已经正确地设置了Docker,并运行了一些容器没有问题。现在我试着设置邮件。我试了两个: 1 https://hub.docker.com/r/paintedfox/postgresql/ 2 https://hub.docker.com/_/postgres/ 我已尝试在VirtualBox中为容器设置端口转发。 我还尝试了机器主机,如Kitematic:192.168.99.100所示

  • 问题内容: 我正在尝试创建简单的需求管理数据库。基本上我有2张桌子,如下所示: 具有2列的Contract_requirements: SW_requirements 我想编写查询来接收这样的表: 表“合同要求”和“软件要求”通过“ RootReq”列关联 香港专业教育学院试图实现艾伦·布朗的代码 http://allenbrowne.com/func- concat.html#Top 这是我的查

  • 嗨,我有两张具有以下结构的表格 学生们 这里,COl1=ID,Col2=Name,Col3=SubjectCode,COl4=Col3中的标记,Col5=subjectCpde,Col6=Col5中的标记 另一个表格叫做主题 这里Col1=主题代码,COl2=学生表中引用的主题名称。 现在我的查询应该返回如下结果。它是如何实现的?