Мне дали задание SQL, которое представляет собой следующую таблицу, имитирующую приложение для знакомств: Имя таблицы = знакомство
user_id | viewing_profile_id | date | liked
1 2 x yes
1 3 x yes
2 1 x yes
2 3 x no
3 1 x no
3 2 x no
по сути, я хочу видеть% профилей, которые соответствуют друг другу. совпадение - это когда оба профиля похожи друг на друга.
Мне кажется, я знаю, что мне нужно делать. Выполните самостоятельное соединение с самим столом и используйте случай, когда профили похожи друг на друга.
select t.date, sum(t.match) / count(t.match) as p_match
from (
select s1.user_id, s1.viewing_profile_id,
date_trunc('day',s1.date) as date, case when s1.liked = 'yes'
and s2.liked = 'yes' then 1 else 0 end as match
from dating s1
left join dating s2 on s2.ser_id = s1.viewing_profile_id
group by 1,2) t
group by 1
Поскольку это всего лишь составная таблица, и у меня нет данных для ее выполнения, мне было интересно, смогу ли я получить представление о том, сработает ли это.
Я ожидаю, что подзапрос выдаст что-то вроде следующего:
user_id | viewing_profile_id | date | match
1 2 x 1
1 3 x 0
2 1 x 1
2 3 x 0
3 1 x 0
3 2 x 0