相关疑难解决方法(0)

如何通过'查询连接PostgreSQL'组中的字符串字段的字符串?

我正在寻找一种通过查询连接组内字段的字符串的方法.例如,我有一张桌子:

ID   COMPANY_ID   EMPLOYEE
1    1            Anna
2    1            Bill
3    2            Carol
4    2            Dave
Run Code Online (Sandbox Code Playgroud)

我想通过company_id分组得到类似的东西:

COMPANY_ID   EMPLOYEE
1            Anna, Bill
2            Carol, Dave
Run Code Online (Sandbox Code Playgroud)

mySQL中有一个内置函数来执行这个group_concat

sql postgresql group-by string-aggregation

329
推荐指数
9
解决办法
30万
查看次数

PostgreSQL 9.1:如何连接数组中没有重复的行,加入另一个表

我正在使用PostgreSQL 9.1并需要帮助将多行连接在一起.我需要在2个表中这样做.当我使用两次array_agg()函数时,我得到结果中的重复值.

表:

CREATE TABLE rnp (id int, grp_id int, cabinets varchar(15) );

INSERT INTO rnp VALUES
 (1,'11','cabs1')
,(2,'11','cabs2')
,(3,'11','cabs3')
,(4,'11','cabs4')
,(5,'22','c1')
,(6,'22','c2');

CREATE TABLE ips (id int, grp_id int, address varchar(15));

INSERT INTO ips VALUES
 (1,'11','NY')
,(2,'11','CA')
,(3,'22','DC')
,(4,'22','LA');
Run Code Online (Sandbox Code Playgroud)

SQL:

SELECT DISTINCT

  rnp.grp_id,
  array_to_string(array_agg(rnp.cabinets)OVER (PARTITION BY rnp.grp_id), ',') AS cabinets,
  array_to_string(array_agg(ips.address) OVER (PARTITION BY ips.grp_id), ',') AS addresses


FROM rnp JOIN ips ON rnp.grp_id=ips.grp_id
Run Code Online (Sandbox Code Playgroud)

结果:

GRP_ID  CABINETS                                             ADDRESSES
11  cabs1,cabs1,cabs2,cabs2,cabs3,cabs3,cabs4,cabs4     NY,CA,NY,CA,NY,CA,NY,CA
22  c1,c1,c2,c2                                             DC,LA,DC,LA
Run Code Online (Sandbox Code Playgroud)

而我需要的是:

 GRP_ID     CABINETS …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-9.1

31
推荐指数
1
解决办法
2万
查看次数

在SQL中返回JSON对象数组(Postgres)

我有下表MyTable:

 id ? value_two ? value_three ? value_four 
???????????????????????????????????????????
  1 ? a         ? A           ? AA
  2 ? a         ? A2          ? AA2
  3 ? b         ? A3          ? AA3
  4 ? a         ? A4          ? AA4
  5 ? b         ? A5          ? AA5
Run Code Online (Sandbox Code Playgroud)

我想查询{ value_three, value_four }按组分组的对象数组value_two.value_two应该在结果中独立存在.结果应如下所示:

 value_two ?                                                                                    value_four                                                                                 
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
 a         ? [{"value_three":"A","value_four":"AA"}, {"value_three":"A2","value_four":"AA2"}, {"value_three":"A4","value_four":"AA4"}]
 b         ? [{"value_three":"A3","value_four":"AA3"}, {"value_three":"A5","value_four":"AA5"}]
Run Code Online (Sandbox Code Playgroud)

它是否使用json_agg()或无关紧要array_agg().

然而,我能做的最好的事情是:

with MyCTE as ( select …
Run Code Online (Sandbox Code Playgroud)

sql arrays postgresql json aggregate-functions

19
推荐指数
1
解决办法
2万
查看次数

Postgresql - concat_ws喜欢的功能?

我在postgresql上遇到了第一次痛苦的经历,当下的分钟挑战是:

如何在postgresql中执行concat_ws,通过以下方式从组中连接多个字段值:

select concat_ws(';',field_lambda) from table_lambda group by id;
Run Code Online (Sandbox Code Playgroud)

postgresql

12
推荐指数
2
解决办法
1万
查看次数

在PostgreSQL查询中按降序聚合字符串

除了问题如何通过'查询连接PostgreSQL'组中的字符串字段的字符串?

如何按降序对员工进行排序?

我正在使用不支持的PostgreSQL 8.4 string_agg().我试过使用以下内容,但不支持:

array_to_string(array_agg(employee ORDER BY employee DESC), ',')
Run Code Online (Sandbox Code Playgroud)

我很欣赏任何正确答案的暗示.

sql postgresql aggregate-functions postgresql-8.4

12
推荐指数
1
解决办法
6154
查看次数

在SELECT中创建srray

我正在使用PostgreSQL 9.1,我有这样的数据结构:

A     B
-------
1     a
1     a
1     b
1     c
1     c
1     c
1     d
2     e
2     e
Run Code Online (Sandbox Code Playgroud)

我需要一个产生这个结果的查询:

1    4     {{c,3},{a,2},{b,1},{d,1}}
2    1     {{e,2}}
Run Code Online (Sandbox Code Playgroud)

A = 1,4行总共A = 1,部分计数(3行带c值,2行带值,.....)

  • 列"A"的不同值
  • 与"A"值相关的所有行的计数
  • 数组包含与"A"值相关的所有元素及其自身的相对计数

数组所需的排序基于每个组的计数(如示例3,2,1,1).

sql postgresql aggregate aggregate-functions postgresql-9.1

6
推荐指数
2
解决办法
1万
查看次数

SQLITE:如果共享一列,则将行合并为单行

从上一篇文章中,我在sqlite3中有以下视图:

CREATE View AttendeeTableView AS

SELECT  (LastName || " " || FirstName) as AttendeeName,  
        CompanyName, 
        PhotoURI,
        CompanyAttendeeRelation.CompanyId,
        CompanyAttendeeRelation.AttendeeId 

FROM    Attendee 
JOIN    CompanyAttendeeRelation on CompanyAttendeeRelation.AttendeeId = Attendee.AttendeeId 

ORDER BY LastName;
Run Code Online (Sandbox Code Playgroud)

现在,由于数据是从Attendee和之间的多对多关系生成的Company,我可以得到如下结果:

Doe John | company A | johnPic.png | 1 | 15
Doe John | company B | johnPic.png | 2 | 15
Run Code Online (Sandbox Code Playgroud)

我想做的是,在有多个公司(如上所述)的情况下,创建一个输出的查询:

Doe John | company A company B | johnPic.png | 1 2 | 15
Run Code Online (Sandbox Code Playgroud)

另一个输出:

Doe John | company A | company B …
Run Code Online (Sandbox Code Playgroud)

sql database sqlite aggregate-functions

5
推荐指数
1
解决办法
1万
查看次数