经典sql

一、连续登录问题

问题:1)、每个用户连续登录最大天数

            2)、连续登录大于三天的用户数

分析:本质都是计算用户连续登录天数

方案一:利用排序窗口

select a.user_id
      ,a.date_rslt
      ,count(1) as cnt
from (
        select    
            t.user_id
            ,t.login_time
            ,date_sub(login_time, num) as date_rslt
         from (
                select 
                    user_id
                    ,login_time
                    ,row_number() over(partition by user_id order by login_time) as num
                from login_log
         ) t
      ) a
group by a.user_id,a.date_rslt

方案二、增量加全量

连续访问天数v_days(最新flag值为1,则v_days累加,否则为0)

历史最大访问天数max_days (从max_days、v_days中取最大值)

select 
    coaleasce(h.user_id,i.user_id) as user_id,
    if(i.user_id is not null,v_days+1,0) as v_days,
    greatest(max_days,if(i.user_id is not null,v_days+1,0)) as max_days
from
history_ds h
full join 
log_time i

扩展1:连续登录,中间间隔1天也算

select user_id
       ,group_id
       ,(datediff(max(login_date),min(login_date))+1) as continuous_login_days
  from (
      select 
            user_id
            ,login_date
            ,sum(if(date_diff>1,1,0)) over(partition by user_id order by login_date rows between unboundedpreceding and current row) as group_id
      from (
        select 
            user_id
            ,login_date
            ,datediff(login_date,last_login_date) as date_diff
        from (
            select 
                user_id
                ,login_date
                ,lag(login_date,1,'1970-01-01') over(partition by user_id order by login_date) as last_login_date
            from test_login
        )t1
    )t2
)t3
group by user_id
       ,group_id;

扩展2:断点排序

连续日期的数据对应的值发生变化,重新排序

select  
  a,
  b,
  row_number() over( partition by b,a_diff order by a) as c
from 
(
  select  
    a,
    b,
    a-num as a_diff
  from 
  (
   select 
     a,
     b,
     row_number() over( partition by b order by  a ) as num
   from t1 
  )tmp1
)tmp2
order by a; 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

定个小目标之刷LeetCode热题(22)

这道题最容易想的就是排序后再遍历,但是时间复杂度就不是O(n)了,所以还是得用更优的解法,直接看题解,它是使用了HashSet,遍历数组,对于每一个数x,如果不存在x - 1则进入内循环,否则跳…

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能?

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能? 智慧工地环境监测系统是一套集成了物联网、大数据和云计算技术的系统,主要用于实时监测和管理建筑工地的环境状况。以下是该系统的一些核…

金融科技行业的融资趋势、投资者关注及未来预测

一、金融科技行业的融资趋势 金融科技行业的融资趋势近年来展现出强劲的增长势头,具体表现在以下几个方面: 融资规模持续扩大: 根据《全球金融科技投融资趋势报告(2023年上半年)》,2023年上半年全球金融科技行业投融资事件总次数…

语言大模型:开启自然语言处理的新篇章

随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著的成果。其中,语言大模型(Language Models)作为近年来崛起的一种新型神经网络模型,已经在文本生成、机器翻译、情感分析等多个NLP任…

Vue02-第一个Vue程序

第一个Vue程序 1、什么是MVVM MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet&#xff0…

基于Java的冬奥会科普平台

开头语:你好,我是计算机学姐码农小野。如果你对冬奥会科普平台感兴趣或有其他技术需求,欢迎随时私信我。 开发语言:Java 数据库:MySQL 技术:Java、B/S架构 工具:MyEclipse、MySQL 系统展示…

ANSYS导入图片建模教程

将一张PNG或JPG格式的图片导入到ANSYS内,根据图片内容生成几何模型可通过下面的思路来实现。 首先选取一张需要导入的图片文件。这里采用随机成长算法生成了一张多孔结构图片,图片样式及绘图参数如下。 利用CAD图像导入插件将图片处理成AutoCAD文件&a…

Zygote进程的理解

Zygote进程是安卓系统的一个重要进程,由init进程创建而来;另外系统里的重要进程(system_server等)都是由zygote进程fork的,所有的app进程也是由zygote进程fork的。 一、C 里的fork函数 fork是Linux里面创建子进程的函…

电脑怎么录音?分享2种音频录制方法

在日常生活和工作中,我们经常需要录制电脑上的音频,无论是为了记录会议内容、保存网络课程,还是为了制作自己的音频素材,录音功能都显得尤为重要。那么电脑怎么录音?本文将详细介绍2种方法教你如何在电脑上进行录音&am…

这个是 2024 Idea最新激活码

idea的激活与安装 操作如下: ① 打开网站:https://web.52shizhan.cn 切换到:正版激活码,点击获取 ② 获取后的激活码,到idea里打开help->register 打开弹窗,如图 切换的activate code 输入激活码&…

预埋螺栓抗滑移系数检测 内六角螺栓扭矩系数检测

螺栓检测范围:螺栓,高强螺栓,地脚螺栓,不锈钢螺栓,六角头螺栓,管片螺栓,膨胀螺栓,化学螺栓,镀锌螺栓,植筋螺栓,普通螺栓,钢结构螺栓&a…

Ubuntu乌班图安装VIM文本编辑器工具

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 Ubuntu-24.04-live-server-amd64启用ssh Ubuntu安装qemu-guest-agent 文章目录 系列文章目录前言一、安装VIM?二、VIM基本设置总结 前言 从centos转到Ubuntu发现默认安装没有vi 一、安装VIM&#xff1…

Springboot整合Kafka消息队列服务实例

一、Kafka相关概念 1、关于Kafka的描述 Kafka是由Apache开源,具有分布式、分区的、多副本的、多订阅者,基于Zookeeper协调的分布式处理平台,由Scala和Java语言编写。通常用来搜集用户在应用服务中产生的动作日志数据,并高速的处…

Erlang程序设计[Part1-Part2 chapter4]

前言: 环境安装 Erlang Shell,CSDN搜教程 Erlang Shell实操 启动 erl Erlang Shell以表达式为执行单位? 结束标志 .加上回车 Part1 为何用 Erlang chapter 1 什么是并发 并发vs并行 并发 单核cpu运行多个进程 一次运行一个 并行 多…

css-Echarts图表柱状图,X轴横坐标值显示不完全问题

1.问题 在Echarts图表中当横坐标数值过多,或者数值过长时会导致部分横坐标不显示。数据量少或简单会默认显示完全,当放大时会导致部分横坐标隐藏。 更改第一个Mon字段名 会发现偶数横坐标显示隐藏; 2.解决方法 2.1 在x横坐标中添加interval…

CPU占用100%的解决办法

上课,先看问题 这里看有个.logrotate的进程占用CPU最高,这里就需要把这个清理掉 执行 ps aux | grep logrotate然后将这个进程杀掉 kill -9 3194067然后再看CPU占有率就下来了 下课

2024北京智源大会开幕,智源推出大模型全家桶及全栈开源技术基座新版图,大模型先锋集结共探AGI之路

2024年6月14日,第六届“北京智源大会”在中关村展示中心开幕。 北京智源大会是智源研究院主办的“AI内行顶级盛会”,以“全球视野、思想碰撞、前沿引领”为特色,汇聚海内外研究者分享研究成果、探寻前沿知识、交流实践经验。2024北京智源大会…

STM32学习和实践笔记(36):DAC数模转换实验

1.STM32F1 DAC简介 DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被转化成电压信号,而 ADC 把电压模拟信号转换成…

哈尔滨等保测评流程

哈尔滨的等保测评程序是一项严格的、系统化的检测程序,其目的在于保证信息系统的安全、稳定。下面详细介绍了这个过程: 一、引言 随着信息技术的飞速发展,信息系统在各行各业中的应用越来越广泛,信息安全问题也日益凸显。为了保障…

【方法】如何隐藏和保护Excel表格中的敏感数据?

在工作中,很多人经常需要处理包含敏感信息的Excel表格。 为了确保这些数据的安全性,我们可以通过隐藏单元格、行和列,以及设置密码保护工作表的方法,来保护数据,下面一起来看看吧! 一、隐藏数据&#xff1…