计数匹配对
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;
<
条件只是确保每对成员在结果集中只出现一次。
这有点复杂,请耐心等待。下面是一个名为 "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;
<
条件只是确保每对成员在结果集中只出现一次。