我对这个问题越来越绝望: 我有一个只有3列的表格,每列都是对成员或旅程的ID的引用。
create table sharesRoom (
member1 int references Members,
member2 int references Members,
journey int references Journeys,
primary key (member1,member2,journey));
我想写一个PLPGSQL函数,它会通过共享一个房间的信息和频率来发出通知。对于那个通知,成员存储在表中的连续性并不重要。所以这个表
1 2 1
2 1 2
3 4 1
4 3 1
5 6 1
8 7 1
应在通知中提出: member1 member2 count(他们共享房间的频率)
1 2 2
3 4 1 (same journey, so this is just 1)
5 6 1
8 7 1
如您所见,成员列的顺序无关紧要。
解决这个问题的最佳方法是什么?我不得不承认,我甚至不知道在select语句中放什么:(
答案 0 :(得分:2)
你需要一种过滤掉'重复'的方法,其中相同的成员只是以不同的顺序。一种方法是使用greatest
and least
:
select high_member, low_member, count(*)
from( select distinct greatest(member1, member2) as high_member,
least(member1, member2) as low_member,
journey
from sharesRoom )
group by high_member, low_member