微智科技网
您的当前位置:首页Hive SQL必刷练习题:同时在线人数问题

Hive SQL必刷练习题:同时在线人数问题

来源:微智科技网

问题描述:

思路:

​ 因为有进直播间时间,和出直播间人数。所以我可以统计,进来一个是不是人数就会加1,出去一个,人数就会减1。

​ 所以可以给进直播间的时间标记一个1,出直播间的时间标记一个-1

​ 可以借助union all,不能是union all,因为进来可能时间一样,直播间id一样,但是不能去重,毕竟进来一个就会算作一个人

 利用窗口函数,累加sum的是最初的行到当前行,每一行都计算一次这个user_change

​ 窗口函数中over(partition by live_id order by envent_time)这个不写range between…and…也会自动默认最初的到当前值

这里需要学习的事情:

1、 这个题的解决思路,用数字代表计算人数,最后统计数字

2、 另外就是union的使用,两个表union的时候,是按照上面那个表的列名字去用作

最终表的列名字,并且两个表的列的个数,每一列的属性类型都要一一对应

	select 
		user_id,
	    live_id,
	    in_datetime event_time,
	     1 user_change
	from live_events
	union all
	select 
		user_id,
	    live_id,
	    out_datetime,
	    -1
	from live_events

因篇幅问题不能全部显示,请点此查看更多更全内容