求用户号对应前两个不同场景

刘超 12天前 ⋅ 76 阅读   编辑

一、需求

  求用户号对应前两个不同场景(场景重复的话,选最开始出现的,场景号不足两个的直接输出),数据示例如下

用户号 场景 访问时间
1 1001 1400
2 1002 1401
1 1002 1402
1 1001 1402
2 1003 1403
2 1004 1404
3 1003 1400

  输出结果如下

1-1001-1002
2-1002-1003
3-1003

二、准备

  1、建表、插入数据

create table test1
(userid varchar(20),
changjing varchar(20),
inttime varchar(20)
);

insert into test1 values
(1,1001,1400),
(2,1002,1401),
(1,1002,1402),
(1,1001,1402),
(2,1003,1403),
(2,1004,1404),
(3,1003,1400),
(4,1004,1402),
(4,1003,1403),
(4,1001,1403),
(4,1002,1404),
(5,1002,1402),
(5,1002,1403),
(5,1001,1404),
(5,1003,1405);

三、实现

  mysql实现

select concat(t.userid,'-',group_concat(t.changjing separator'-')) as result
from(
    select userid,changjing,inttime,if(@tmp=userid,@rank:=@rank+1,@rank:=1) as new_rank,@tmp:=userid as tmp
    from (
        select userid,changjing, min(inttime) inttime from test1 group by userid,changjing
    )temp
    order by userid,inttime
) t
where t.new_rank<=2
group by t.userid;

注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: