计数匹配对

Count matching pairs

这有点复杂,请耐心等待。下面是一个名为 "list" 的 table,有 2 列。 table 有每个成员的数据和他们喜欢的电影。即成员 01 喜欢电影 02、05、14、21 和 25。我想知道每个成员与另一个成员有多少相似的电影。例如,成员01和成员02共有一部电影(电影14)。 SQL有没有办法写这个?

       List
------      ------
member      film
------      ------
01          02
01          05
01          14
01          21
01          25
02          03
02          09
02          14
03          01
03          05
03          17
03          21

您可以使用自联接和聚合为此编写一般查询。以下总结了每对用户的结果:

select l1.member, l2.member, count(*) as NumFilmsInCommon
from list l1 join
     list l2
     on l1.member < l2.member and l1.film = l2.film
group by l1.member, l2.member;

<条件只是确保每对成员在结果集中只出现一次。