基于不同列重叠列

问题描述 投票:2回答:1

我在Postgres有一个简单的表,其中包含一周中的几天和人。

INSERT INTO mytable (day, person)
values
('Monday', 'A'),
('Monday', 'A'),
('Monday', 'B'),
('Tuesday', 'A'),
('Wednesday', 'A'),
('Wednesday', 'B'),
('Thursday', 'B'),
('Thursday', 'B');

我想找到每对天数重叠的人数。因此,例如,星期一有人A和B.星期二只有人B,所以这将产生如下一行:

('Monday', 'Tuesday', 1)

最终输出应如下所示:

('Monday', 'Monday', 2),
('Monday', 'Tuesday', 1),
('Monday', 'Wednesday', 2),
('Monday', 'Thursday', 1),
('Tuesday', 'Tuesday', 1),
('Tuesday', 'Monday', 1),
('Tuesday', 'Wednesday', 1),
('Tuesday', 'Thursday', 0),
('Wednesday', 'Wednesday', 2),
('Wednesday', 'Monday', 2),
('Wednesday', 'Tuesday', 1),
('Wednesday', 'Thursday', 1),
('Thursday', 'Thursday', 1),
('Thursday', 'Monday', 1),
('Thursday', 'Tuesday', 0),
('Thursday', 'Wednesday', 1)

我一直在玩交叉连接和交叉,但似乎没有任何东西产生正确的结果。

sql postgresql postgresql-9.5
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.