我有一个包含6列的表 - Date,time,action,user_id,channel和time_and_date。 当用户开始或结束观看电视频道时,动作是指打开或关闭。
我的任务如下 获得数据概述:
- find the one-time users (who used the service only once or in only one day and
never came back) for each channel, each genre, each community
Anoother表提供user_id,流派(新闻,运动......)
如何找到满足这些要求的一次性用户?
答案 0 :(得分:0)
听起来像这样:
select user_id, count(*)
from action_table
where action = 'open'
group by user_id
having count(*) = 1
order by user_id
答案 1 :(得分:0)
您可以尝试类似
的内容 SELECT FROM first_table LEFT JOIN users ON first_table.user_id=users.id GROUP BY users.id HAVING COUNT(users.id)=1
您可以在选择超过流派频道后加入您的流派表...
答案 2 :(得分:0)
获得一次性用户:
select user_id ,min(channel) as channel, min(genre) as genre, min(community) as community
from action_table
group by user_id
having min(date) = max(date);
请注意having
子句。这可以保证用户只有一个日期(但不一定是一个记录)。
这为三个维度中的每个维度返回一个值 - 对于一次性用户,它们是相同的。对于在一天内多次访问的人,它会选择一个值。