2017-03-15 14 views
0

私はteam_idの束を持っていると言います。PSQL別のグループで共通の値を見つける

team_id|username 
-------|-------- 
     1|  u1 
     1|  u2 
     2|  u3 
     2|  u1 
     2|  u2 
     3|  u1 
     3|  u2 
     3|  u4 

だから、すべてのteam_idのために、私は、任意の2人のユーザーが常に同じteam_id.を持っているのであれば、上記の例では、クエリが常に同じチームで、彼ら以来u1u2を返すべき見つけたいです。何かを説明するのは難しいですか?

答えて

1

ビルドデータ:

t=# create table so17(team_id int,username text); 
CREATE TABLE 
t=# copy so17 from stdin delimiter '|'; 
Enter data to be copied followed by a newline. 
End with a backslash and a period on a line by itself. 
>>  1|  u1 
     1|  u2 
     2|  u3 
     2|  u1 
     2|  u2 
     3|  u1 
     3|  u2 
     3|  u4>> >> >> >> >> >> >> 
>> \. 
COPY 8 

を選択:

t=# with e as (with i as (select *,array_agg(team_id) over (partition by username) from so17) 
select distinct username,count(1) over (partition by array_agg) from i) 
select username from e where count > 1; 
username 
---------- 
     u2 
     u1 
(2 rows) 
関連する問題