有多少百分比的用户曾经浏览过用户资料页面?



我有两个表,用户(email_address, first_name, id, last_name)和事件(event_id, event_name, event_time, platform, user_id)。我想计算曾经查看过用户配置文件页面的用户的百分比。我有这个代码,不知道如何继续。

SELECT u.id as user_id, COUNT(e.event_id) as num_views
FROM 
dsv1069.users u 
LEFT OUTER JOIN 
dsv1069.events e 
ON 
e.user_id=u.id 
WHERE 
e.event_name = 'view_user_profile'
GROUP BY 
u.id

对于每个用户,使用EXISTStrue获得一个1false获得一个0,作为查看用户个人资料页面的结果,并使用AVG()聚合函数获得这些1和0的平均值:

SELECT 100 * AVG(
EXISTS (
SELECT *
FROM dsv1069.events e
WHERE e.user_id = u.id AND e.event_name = 'view_user_profile'
)
) AS percentage
FROM dsv1069.users u;

计算百分比的最快方法是执行2个单独的计数查询

select 
100*( SELECT  count(distinct user_id) 
FROM dsv1069.events e 
WHERE e.event_name = 'view_user_profile')
/ ( SELECT count(*) FROM dsv1069.users) views_percentage

如果select count(*) from dsv1069为0。用户此计算返回null

最新更新