5
回答
关于SQL优化的问题
华为云数据库免费试用   

现在有一个需求,求用户流失的,现在数据库表字段是

login_time是登录时间.字段是时间戳类型.要求出1日流失.2日流失,三日流失和周流失人数.

流失计算公式:

1日:7月6日的1日流失用户数为7月6日登陆的用户在7月7日没有登陆的用户数            
2日:7月6日的1日流失用户数为7月6日登陆的用户为7月7-8日没有登陆的用户数            
3日:7月6日的3日流失用户数为7月6日登陆的用户为7月7、8、9日没有登陆的用户数            
周流失:7月6日的周流失数=6月30日-7月6日登陆过的用户在7月7日-7月13日没有登陆的用户数            

 

我现在的思路是,比如算1日流失:先算出在7/6号登录的人数,在算出7/6号登录的人并且7/7日也登录的人数.两个相减

问题在算7/6号登录的人并且在7/7日也登录的这个SQL太慢了.有没有大神设计一下!!

本人的sql  :select count(distinct wx_openid) from loginlog where login_time between '7/7号开始时间戳'  and '7/7号结束时间戳' and wx_openid in(select distinct wx_openid from loginlog where login_time between '7/6号开始时间戳'  and '7/6号结束时间戳' )  limit 1;

注意loginlog 都是大表

<无标签>
举报
叶峰2017
发帖于6天前 5回/284阅
顶部