当前位置: 首页 > news >正文

mysql场景题:最近7天连续3天登陆用户,字段,id,date(已去重)

1.最近7天连续3天登陆用户,字段,id,date(已去重)

思路:

  1. lag对时间开窗(注意时间得转换为时间戳(int类型才可以添加后续条件),跳行为2(连续3天),前2行没有值的,默认为0

  2. 转化时间字段为时间戳减去它上2条的那条数据的时间戳,得出是否为连续登陆3天的差值(第三天减去第一天的时间戳为(2 * 24 * 60 * 60)

  3. Where 过滤出最近7天的数据

  4. 对id进行分组,过滤差值为2 * 24 * 60 * 60的数据

  5. 答案:

select id
from (select id, date, (unix_timestamp(date) - lag(unix_timestamp(date), 2, 0) over (partition by id order by date)) lofrom toms) t1
where date between date_sub(current_date(), interval 7 day) and current_date()
group by id
having min(lo) = 2 * 24 * 60 * 60;

2.字段,id,send_time(datetime类型),soc,需求:soc大于100并且持续5s会被告警,求出所有数据(告警和不告警),输出字段,id,send_time,soc,持续时间,告警状态(0:不告警,1:告警)

思路:

  • 判断soc是否大于100,如果是的给它一个自增项(用于对告警的数据进行分组),否则取0,得到字段flag

  • 对flag字段进行求出截止到当前的最大值,得到字段flag2,用于得到一整段分组的告警组

  • 对flag2字段进行开窗分组求充电时间最小值,得到字段over_time

  • 时间相减判断,如果大于5状态置为1

答案:

select charge_id,soc,daq_time,timestampdiff(second, over_time, daq_time)                stay_length,if(timestampdiff(second, over_time, daq_time) >= 5, 1, 0) status
from (select *, min(daq_time) over (partition by flag2 order by daq_time) over_timefrom (select charge_id,soc,daq_time,flag,max(flag)over (partition by charge_id order by daq_time rows between unbounded preceding and current row ) flag2from (select charge_id,soc,daq_time,if(abs(soc) > 100, 0, row_number() over (partition by charge_id order by daq_time )) flagfrom demo) t1) t2) t3;

 

http://www.lryc.cn/news/159052.html

相关文章:

  • 华为OD机试 - 最差产品奖 - 双端队列 deque(Java 2023 B卷 200分)
  • 【校招VIP】前端算法考察之链表算法
  • uni-app之android离线自定义基座
  • 【AWS】实操-保护 Amazon S3 VPC 终端节点通信
  • C# Color颜色RGB对照表
  • Thread中几个常用的api详解join,interrupt
  • Golang项目实战(三)
  • TSUMU58CDT9-1显示器芯片方案
  • React 安装使用 Less(详细流程,包含 webpack、craco 方式)
  • 力扣(LeetCode)算法_C++—— 快乐数
  • 滴滴笔试——算式转移
  • [LeetCode] 128. 最长连续序列
  • docker 安装rabbitmq
  • 一文概览NLP句法分析:从理论到PyTorch实战解读
  • NPM 常用命令(三)
  • UWB学习——day1
  • 2023国赛数学建模C题模型代码
  • 2023年高教社杯数学建模国赛C题详细版思路
  • 互联网摸鱼日报(2023-09-07)
  • 并行处理系统
  • 2023国赛数学建模A题思路分析 - 定日镜场的优化设计
  • git企业级使用
  • [docker]笔记-存储管理
  • 记录获取蓝鲸智云token的过程
  • C语言AES加密解密字符串与16进制数据
  • NIFI实现JSON转SQL并插入到数据库表中
  • 【canal系】canal集群异常Could not find first log file name in binary log index file
  • ESP32C3 PWM输出
  • 二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换
  • mojo初体验