交叉引用列表或记录在 presto 中相互比较



我正在尝试交叉引用一个表。

我有一个度假目的地表,以及查看这些目的地的唯一用户 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;

相关内容

  • 没有找到相关文章

最新更新