簡體   English   中英

如何左連接 SQL 子查詢與表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM