码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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. 答案:

    1. select id
    2. from (select id, date, (unix_timestamp(date) - lag(unix_timestamp(date), 2, 0) over (partition by id order by date)) lo
    3. from toms) t1
    4. where date between date_sub(current_date(), interval 7 day) and current_date()
    5. group by id
    6. 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

    答案:

    1. select charge_id,
    2. soc,
    3. daq_time,
    4. timestampdiff(second, over_time, daq_time) stay_length,
    5. if(timestampdiff(second, over_time, daq_time) >= 5, 1, 0) status
    6. from (select *, min(daq_time) over (partition by flag2 order by daq_time) over_time
    7. from (select charge_id,
    8. soc,
    9. daq_time,
    10. flag,
    11. max(flag)
    12. over (partition by charge_id order by daq_time rows between unbounded preceding and current row ) flag2
    13. from (select charge_id,
    14. soc,
    15. daq_time,
    16. if(abs(soc) > 100, 0, row_number() over (partition by charge_id order by daq_time )) flag
    17. from demo) t1) t2) t3;

     

  • 相关阅读:
    5、Nacos服务注册与发现
    VMware16虚拟机添加硬盘(磁盘)和挂载硬盘(磁盘)
    关于#python#的问题:这位博主的做法运行train.py的时候出现报错,报错如下:报错里面的文件打开后追溯到的位置如下:(开发工具-pycharm)
    免费好用的Mac电脑磁盘清理工具CleanMyMac
    小程序源码:超强大教育培训学校源码微信小程序源码下载,带课件/习题/活动插件,支持小程序与公众号双版本
    猿创征文丨赶紧进来修内功!!! 详细讲解数据在内存中的存储(浮点数篇)
    二十四、【参考素描三大面和五大调】
    leetcode做题笔记138. 复制带随机指针的链表
    按月统计数据——mysql实现
    MongoDB复杂Json数据的增删改查
  • 原文地址:https://blog.csdn.net/anzhenxi3529/article/details/132696783
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号