zoukankan      html  css  js  c++  java
  • 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');

    简单看一下数据

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

    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;
  • 相关阅读:
    express 连接 moogdb 数据库
    数组 去重
    vue 路由meta 设置title 导航隐藏
    :src 三目运算
    axios baseURL
    js对象修改 键
    Swiper隐藏后在显示滑动问题
    字符串中的替换
    获取服务器时间
    vue a链接 添加参数
  • 原文地址:https://www.cnblogs.com/shiji7/p/13674888.html
Copyright © 2011-2022 走看看