我有两个表,用户(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
对于每个用户,使用EXISTS
为true
获得一个1
或false
获得一个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