mysql面试题(1)

mysql训练逻辑题(1)

首先看一下题目的是什么?

mysql面试题(1)

这个题目其实不难理解,看下这个题心里有个初步的思路通过concat将列连接起来,再通过group_concat将列基于用户号进行聚合

首先导入数据

create table b(
userid int,
cj varchar(50),
ft varchar(50)
);

insert into b values(1,1001,1400);
insert into b values(2,1002,1401);
insert into b values(1,1002,1402);
insert into b values(1,1001,1402);
insert into b values(2,1003,1403);
insert into b values(2,1004,1404);
insert into b values(3,1003,1400);

简单看一下数据

mysql面试题(1)

场景重复的话,选择最早的时间

select userid,cj,min(ft) ft from b group by userid,cj;

  mysql面试题(1)

你认真查看结果其实就是要每个userid的前两条记录,这让我们想起了排名函数

select concat(userid,-,group_concat(cj separator-))as ppp from
(
select userid,cj,rank() over(partition by userid order by cj)as pm from
(
select userid,cj,min(ft) ft from b group by userid,cj order by userid,cj
)t
)t1
where t1.pm<=2 group by userid;

 

mysql面试题(1)

上一篇:《Redis内存数据库》Redis数据类型和基本操作


下一篇:大数据第54天—Mysql练习题12道之九-充值日志表-杨大伟