計算本年使用者最大未登入時間段
計算本年使用者最大未登入時間段
space_user_task_statistics_log 如果使用者登入過,則將資訊記入該表
主要資訊有使用者ID和登入時間
space_user 記錄使用者基本資訊. 主要包括使用者ID和註冊時間資訊.
需求:
查所有使用者在2017年最大的未登入時間段
如果使用者在2017年才註冊,那麼有效時間從註冊時間開始算。
其實這是一個MySQL計算連續範圍的問題。
http://blog.itpub.net/29254281/viewspace-1385638/
SQL
生產查詢一次耗時10分鐘左右.
diff 是最大未登入時間段的天數.
space_user_task_statistics_log 如果使用者登入過,則將資訊記入該表
主要資訊有使用者ID和登入時間
space_user 記錄使用者基本資訊. 主要包括使用者ID和註冊時間資訊.
需求:
查所有使用者在2017年最大的未登入時間段
如果使用者在2017年才註冊,那麼有效時間從註冊時間開始算。
其實這是一個MySQL計算連續範圍的問題。
http://blog.itpub.net/29254281/viewspace-1385638/
SQL
- select userid,startdate,enddate,diff from (
- select t3.*,case when userid=@gid then @rn:=@rn+1 when @gid:=userid then @rn:=1 end rank
- from (
- select userid,dt-interval rn day c,min(dt) startdate,max(dt) enddate,
- datediff(max(dt),min(dt)) diff
- from (
- select
- cal.dt,cal.userid,case when cal.userid=@gid then @rn:=@rn+1 when @gid:=cal.userid then @rn:=1 end rn
- from
- (
- select dt,userid from (
- select '2017-01-01'+interval id-1 day dt from nums,(select @gid:=0,@rn:=0) vars where id<=dayofyear(now())
- ) var,
- (
- select u.userid,u.registertime from space_user u
- where exists(select * from space_user_task_statistics_log l where l.createDate>='2017-01-01' and l.userid=u.userid)
- ) userlist
- where dt>=date(userlist.registertime)
- ) cal
- left join
- (
- select log.userid,log.createDate from
- space_user_task_statistics_log log
- where log.loginflag=1 and log.createDate>='2017-01-01'
- ) t1 on(t1.userid=cal.userid and cal.dt=t1.createDate)
- where createdate is null
- order by userid,dt
- ) t2
- group by userid,dt-interval rn day
- ) t3
- order by userid,diff desc
- ) t4 where rank=1
- order by diff desc;
生產查詢一次耗時10分鐘左右.
diff 是最大未登入時間段的天數.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2148691/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 計算兩段時間的時間差 (轉)
- 限制使用者在某個時間段內禁止登入資料庫資料庫
- ORACLE計算2個時間段相差時間小時、分、秒Oracle
- 如何限制使用者在某個時間段內禁止登入資料庫資料庫
- XP中“登入失敗:未授予使用者在此計算機上的請求登入型別”的解決計算機型別
- JSP如何儲存使用者上次登入時間JS
- 關於XP中“登入失敗:未授予使用者在此計算機上的請求登入型別”的解決計算機型別
- Hive計算最大連續登陸天數Hive
- PHP時間計算PHP
- 時間差計算
- 定期刪除檔案,限制linux使用者登入時間Linux
- 畫像預先計算的一點設想.時間段分片
- JS計算時間差JS
- 計算時間的例子
- 如何計算一段js程式碼執行耗費的時間JS
- js如何計算一段程式碼的執行花費時間JS
- Linux Shell 時間運算以及時間差計算方法Linux
- 時間段時間點自己理解
- js 計算兩個時間的時間差JS
- java計算時間差及比較時間Java
- 成品直播原始碼,golang計算時間段內的工作日數量原始碼Golang
- bash shell計算時間差
- 註冊時間差計算
- 計算SQL執行時間SQL
- 計算兩個時間差
- 計算時間,指定時間的多少個月後
- java計算時間差及比較時間大小Java
- JavaScript計算兩個時間點之間的時間差JavaScript
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 黃仁勳:序列計算過時平行計算是未來
- 在sqlnet.ora中設定引數限制使用者登入時間SQL
- 使用者登入時的環境載入順序
- python,時間加減,時間計算,時間格式化,時間提取彙總Python
- JavaScript 演算法:計算最大連續日期區間JavaScript演算法
- carbon 計算當前時間與給定時間差
- PHP 時間格式化計算PHP
- TimeDateCalculator for mac 時間計算器Mac
- 時間複雜度的計算時間複雜度