Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- user_id
- event
- time
- SELECT COUNT(t.user_id) cnt_session, t.user_id
- FROM time_user t
- WHERE ROUND(
- (
- (
- SELECT t1.`time`
- FROM time_user t1
- WHERE t1.user_id = t.user_id AND t1.`time` > t.`time` LIMIT 1
- )
- - t.`time`
- ) / 60
- ) > 5
- GROUP BY t.user_id
- ORDER BY t.`time` ASC
- CREATE TABLE `time_user` (
- `user_id` INT(11) NULL DEFAULT NULL,
- `time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
- `event` ENUM('Y','N') NULL DEFAULT NULL,
- INDEX `user_id` (`user_id`),
- INDEX `time` (`time`)
- )
- COLLATE='utf8_general_ci'
- ENGINE=InnoDB
- ;
- select avg(length)
- from (
- select user_id, snum, TIMESTAMPDIFF(SECOND,min(time),max(time)) length
- from(
- select user_id,time,
- @snum:=if(@user=user_id and TIMESTAMPDIFF(SECOND,@ptime,time) <= 60*5,
- @snum,@snum+1) snum,
- @user:=user_id, @ptime:=time
- from time_user,
- (select @ptime:=0, @user:=0, @snum:=0) A
- order by user_id, time
- ) B
- group by snum
- ) C
- select t.user_id, count(t.user_id)+1 as cnt_session, (SELECT count(DISTINCT t2.user_id) FROM time_user t2) as cnt_users
- from time_user t
- WHERE ROUND(((SELECT t1.`time` FROM time_user t1 WHERE t1.user_id = t.user_id AND t1.`time` > t.`time` ORDER BY t1.time ASC LIMIT 1) - t.`time`) / 60) > 5
- GROUP BY t.user_id
- ORDER BY t.`time` ASC
Add Comment
Please, Sign In to add comment