首页 > 数据库技术 > 详细

mysql面试题(1)

时间:2020-09-15 20:01:05      阅读:69      评论:0      收藏:0      [点我收藏+]

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‘);

简单看一下数据

技术分享图片

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

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

  技术分享图片

你认真查看结果其实就是要每个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)

原文:https://www.cnblogs.com/shiji7/p/13674888.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!