大数据经典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_rsltfrom (select user_id,login_time,row_number() over(partition by user_id order by login_time) as numfrom 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,count(login_date) as continuous_login_daysfrom (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_idfrom (select user_id,login_date,datediff(login_date,last_login_date) as date_difffrom (select user_id,login_date,lag(login_date,1,'1970-01-01') over(partition by user_id order by login_date) as last_login_datefrom 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_difffrom (select a,b,row_number() over( partition by b order by  a ) as numfrom t1 )tmp1
)tmp2
order by a; 

大数据面试题之SQL题_大数据sql面试题-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进入容器修改内容_提交改变后的镜像_镜像保存成tar压缩包离线传输_镜像传输_镜像推送到公共仓库---分布式云原生部署架构搭建009

然后再来看,进入docker内部去看看. 用 docker exec -it imgid /bin/bash 这样就可以进入容器内部 而且关于,镜像的,内部放到什么地方了,都可以找到比如 在hub.docker的地址里面,找到nginx可以看到,对应的 /usr/share/nginx/html 可以看到这个路径. 然后去看看,进入到/usr…

Android 数据库

帮助类对象中的getWritableDatabase 和 getReadableDatabase都可以帮助我们获取一个数据库操作对象SqliteDatabase. 区别: getReadableDatabase: 先尝试以读写方式打开数据库,如果磁盘空间满了,他会重新尝试以只读方式打开数据库。 getWr…

如何恢复未格式化分区数据?看这里!

什么是未格式化分区? 未格式化或RAW文件系统的分区无法被Windows操作系统识别和挂载,因此,Windows会提示你进行格式化以创建新的文件系统。注意,不要进行格式化。通常,文件系统变为未格式化或RAW会出现以下常见错误消…

专业VS学校:高考后的选择困境与解决之道

随着2024年高考的落幕,数百万考生站在了人生新的十字路口。分数的揭晓,既是对过往努力的肯定,也带来了新的选择难题。在专业与学校的权衡中,考生们往往陷入两难:是追随内心选择心仪的专业,还是选择一个知名…

大学选专业还是选学校好 哪个更重要

​​​​​​​如果你的分数不理想,建议先选专业。如果你是高分考生,建议先选学校。具体来看一下! 选专业还是选学校好 如果你是高分考生,建议先选学校 1 可以借助学校的名气 我们都知道,学校越有名,能…

(深度学习记录)第TR5周:Transformer中的位置编码详解

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 🏡我的环境: 语言环境:Python3.11.4编译器:Jupyter Notebooktorcch版本:2.0.…

【Matlab编程学习】 | matlab语言编程基础:常用图形绘制基础学习

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

传输层udp和tcp协议格式

UDP协议 UDP协议端格式 udp的前八个字节是报头,后面部分就是有效载荷。而目的端口号就保证了udp向应用层交付的问题。 而针对于报头和有效载荷分离是根据固定八字结的报头长度。数据的长度就是取决于报头中udp长度字段的大小来确定udp报文长度,因此也可…

Apifox 中如何处理加密或编码过的响应数据?

接口返回的响应数据有时是经过编码或加密处理的,要转换成可读的明文,可以使用 Apifox 内置的 JS 类库、或者通过调用外部编程语言 (如 Python、JavaScript 等) 来进行处理。 例如,一个经过 Base64 编码的数据可以通过…

可视化数据科学平台在信贷领域应用系列六:自动机器学习(上篇)

在现代数据驱动的世界中,机器学习已经成为解决复杂问题和推动创新的重要手段。然而,传统的机器学习模型开发过程复杂且耗时,包括数据预处理、特征工程、模型选择、参数调优和模型评估等多个步骤环节,需要模型开发人员具备丰富的专…

AI“音乐创作”横行给音乐家带来哪些隐忧

​​​​​​​近日,200多名国际乐坛知名音乐人联署公开信,呼吁AI开发者、科技公司、平台和数字音乐服务商停止使用人工智能(AI)来侵犯并贬低人类艺术家的权利,具体诉求包括,停止使用AI侵犯及贬低人类艺术家的权利,要求…

Nginx配置文件解析与实例详解:打造高效稳定的网站服务

Nginx 是一种高性能的 HTTP 和反向代理服务器,同时也提供了 IMAP/POP3 代理服务器功能。由于其高并发处理能力、低内存消耗和灵活的配置能力,Nginx 被广泛应用于 Web 服务器、反向代理、负载均衡和 API 网关等场景。本文将详细解析 Nginx 的配置文件结构,并通过实例演示如何…

wstring与wchar_t

文章目录 1、介绍2、相关函数 1、介绍 wstring 是由宽字符wchar_t构成字节列表。一个wchar_t字符的大小是2 字节,char字符大小是1字节。 2、相关函数 QString qs"hello"; QString fileName "000000000003.xls"; std::wstring ws fileName.…

vite中使用scss技巧

一、样式混合 1.普通用法 mixin flex() {display: flex;justify-content: space-around;align-items: center; }//使用方法 .legend_box_item {width: 50%;height: 10px;include flex; }2.传递参数,参数后面的值为默认值 mixin flex($justify: flex-start, $alig…

html + css + js 实现简易轮播图

html css js 实现简易轮播图 code <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

Java面试题:mysql执行速度慢的原因和优化

Sql语句执行速度慢 原因 聚合查询 多表查询 表数据量过大查询 深度分页查询 分析 sql的执行计划 可以使用EXPLAIN或者DESC获取Mysql如何执行SELECT语句的信息 直接在select语句前加关键字explain/desc 得到一个执行信息表 信息字段分析 possible_keys:可能使用到的索…

C语言中的回调函数定义以及使用回调函数的例子。

在C语言中&#xff0c;回调函数&#xff08;Callback Function&#xff09;是一种特殊的函数&#xff0c;它作为参数传递给另一个函数&#xff08;我们称之为主函数或调用者&#xff09;&#xff0c;并在需要的时候由主函数来调用。回调函数允许主函数在适当的时候执行特定的操…

busybox的基本使用记录壹

内核如何启动init进程 init/main.c static int __ref kernel_init(void *unused) {int ret;kernel_init_freeable();/* need to finish all async __init code before freeing the memory */async_synchronize_full();ftrace_free_init_mem();jump_label_invalidate_initmem()…

生产级别的 vue

生产级别的 vue 拆分组件的标识更好的组织你的目录如何解决 props-base 设计的问题transparent component &#xff08;透明组件&#xff09;可减缓上述问题provide 和 inject vue-meta 在路由中的使用如何确保用户导航到某个路由自己都重新渲染&#xff1f;测试最佳实践如何制…

JMeter的基本概念

一、主流测试工具 1&#xff0c;Loadrunner HP Loadrunner是一种工业级标准性能测试负载工具&#xff0c;可以模拟上万用户实施测试&#xff0c;并在测试时可实时检测应用服务器及服务器硬件各种数据&#xff0c;来确认和查找存在的瓶颈 支持多协议:Web(HTTP/HTML)、Windows…