我正在尝试交叉引用一个表格。
我有一张假日目的地表,以及查看这些目的地的唯一用户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的子集第一栏中的位置。
有什么想法吗?
答案 0 :(得分:0)
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;