[英]How to Left Join SQL Subquery with Table
目標:創建一個查詢來計算具有/不具有特定屬性的 ID 的比率。
表一:events 字段:event_id, event_name, user_id 字段 event_id 是唯一的key/index 字段event_name 有3個潛在值,其中一個是被檢查的值。 字段 user_id 是表 2 中的外鍵
表 2:用戶字段:id(以及一長串不相關的其他屬性)
為了獲得具有限定屬性的 user_ids 列表,我創建了以下內容:
SELECT DISTINCT events.user_id AS viewing_ids
FROM events
WHERE event_name = 'view_user_profile'
正如我所期望的那樣,這提供了具有與其 user_id 關聯的相應 event_name 的用戶列表
下一部分是我混淆的地方。 是的,我可以 COUNT(DISTINCT the select 來獲取具有屬性“view_user_profile”的計數 ID,但這只提供了一半的答案。我需要做的是然后加入該列表與表用戶的完整 user_id 列表,然后確定 id 何時存在或不存在。
我在想最初的 SELECT 需要是
SELECT
(CASE WHEN viewers IS NULL THEN false
ELSE true END) AS has_viewed_profile
, COUNT(user_id) AS users
FROM
(SELECT DISTINCT events.user_id AS viewing_ids
FROM events
WHERE event_name = 'view_user_profile') viewers
LEFT JOIN
users
ON
??? = users.id
這是我迷路的地方,我沒有觀眾的專欄名稱......
我想這就是你想要的:
select count(e.user_id) / count(*) as view_ratio
from users u left join
(select distinct e.user_id
from events e
where e.event_name = 'view_user_profile'
) e
on e.user_id = u.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.