我正在尝试交叉引用一个表。
我有一个度假目的地表,以及查看这些目的地的唯一用户 ID。
我想,对于每个目的地(例如 A)将其与所有其他目的地(例如 B - Z)交叉引用,并计算有多少查看 A 的用户也查看了 B - 如下所示:
Location 1 | Location 2 | Users looking at 1 | Users looking at 2 who looked at 1
到目前为止,我可以得到位置 1 和查看位置 1 的用户:
select * from (select A.location, count(distinct(A.user)) as the_count from (
SELECT
location, distinct(user)
FROM
search
) as A group by A.location
我想我需要做某种条件连接,我只是无法弄清楚如何,将该选择的每个结果与其他所有结果连接起来,并包括来自 A 的子集,用户在第一列中查找了位置。
有什么想法吗?
PrestoDB非常接近标准SQL。 在标准 SQL 中,您可以按以下方式执行此操作:
select l1.location as location1, l2.location as location1,
count(distinct s2.user)
from location l1 join
location l2
on l1.location < l2.location left join
search s1
on s1.location = l1.location left join
search s2
on s2.location = l2.location and
s2.user = s.user
group by l1.location, l2.location;