面试题: LEAD 和 LAG 求每个用户的页面停留时长

news/2024/5/2 12:02:49/文章来源:https://blog.csdn.net/wuxintdrh/article/details/128199338

我们先来看看这两个函数的语法:

LEAD(col,n,default) OVER()

  • 说明: 用于统计窗口内向下第n行的值
  • 参数1: 为要取值的列名
  • 参数2: 为向下第n行,默认值为1,这个值是固定的,不能动态的变化
  • 参数3: 为默认值,当向下第n行的值为NULL时,取默认值,如果不指定,则默认值为NULL

LAG(col,n,default) OVER()

  • 说明: 用于统计窗口内向上第n行的值,与lead()刚好相反
  • 参数1: 为要取值的列名
  • 参数2: 为向上第n行,默认值为1,这个值是固定的,不能动态的变化
  • 参数3: 为默认值,当向上第n行的值为NULL时,取默认值,如果不指定,则默认值为NULL

实例:求每个用户的页面停留时长

页面停留时长:用户进入A页面,又进入B页面。进入A页面的时间为date1,进入B页面的时间为date2,那么在A页面的停留时间为date2-date1。实际生产场景中,可能会考虑不超过30min等等因素。

1.1、创造数据

CREATE TABLE log_info
( uid string,dateline string,page string
);
-- 模拟数据 
INSERT INTO log_info VALUES ('1001', '2021-08-10 10:18:31', 'url3'),
('1001', '2021-08-10 10:01:24', 'url1'),
('1001', '2021-08-10 10:05:22', 'url2'),
('1002', '2021-08-10 10:10:31', 'url1'),
('1002', '2021-08-10 10:15:31', 'url2'),
('1002', '2021-08-10 10:18:31', 'url3');

1.2、常规方法: 排序,自关联

1.2.1、排序

SELECT *, ROW_NUMBER() OVER(PARTITION BY uid ORDER BY dateline) rank
FROM log_info 

在这里插入图片描述

1.2.2、自关联

SELECT t1.uid,t1.dateline start_time,t2.dateline end_time,t1.page
FROM (SELECT *,ROW_NUMBER() OVER(PARTITION BY uid ORDER BY  dateline) rankFROM log_info ) t1
LEFT JOIN (SELECT *,ROW_NUMBER() OVER(PARTITION BY uid ORDER BY  dateline) rankFROM log_info ) t2
ON t1.uid = t2.uid AND t1.rank+1=t2.rank;

用户进入一个页面和跳到另一个页面的时间,通过这两个时间的差值就是我们要计算的用户页面停留时长
在这里插入图片描述

1.3、LEAD

SELECT   uid,dateline,lead(dateline,1) over(distribute by uid sort by dateline asc) as dateline_end,pageFROM log_info; 

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

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

相关文章

深度学习-全卷积神经网络(FCN)

1. 简介 全卷积神经网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之…

国际学校妈妈哭诉IB太难:中国孩子都不知道怎么答题?

听别人说考国际学校的IB体系相对简单直到我看到IB试题才知道其实IB一点都不容易特别对于中国学生有大量写论文的部分来看看IB的真题有些学生真的很难下笔不知道怎么答题啊!商科生物 题目都是非常考验综合能力的,学生需要掌握很多知识点并融会贯通&#x…

cengbox2靶机(hydra爆破、公私钥免密登录)

环境准备 靶机链接:百度网盘 请输入提取码 提取码:zdpr 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.arp-scan -l探测目标靶机ip 2.nmap -p- -A -T4 192.168.1.107 探测目标靶机开放端口和服务 …

Locust学习记录5-任务属性【Task】

Task 当负载测试开始时,将为每个模拟用户创建一个User类的实例,他们将开始在自己的绿色线程中运行。当这些用户运行时,他们选择他们执行的任务,休眠一段时间,然后选择一个新任务。 这些任务时普通的python可调用文件…

服务访问质量(QoS)介绍与技术 一

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…

K8S Pod控制器详细讲解

文章目录一、Pod控制器介绍二、ReplicaSet(RS)三、Deployment(Deploy)1.镜像更新:2.版本回退3.金丝雀发布/灰度发布四、Horizontal Pod Autoscaler(HPA)五、DaemonSet(DS)六、Job七、CronJob(CJ)结尾一、Pod控制器介绍 Pod是kubernetes的最小管理单元,在…

使用JAR签名进行代码签名

JavaArchive(JAR)包格式可用于打包Java应用程序和库。 签名的JAR文件可以选择包含来自TSA时间戳响应,使用RFC#3161格式。 添加JAR签名者添加JAR签名者的链接,SignServer中的JAR签名器称为JArchiveSigner。 要配置JArchiveSigner,请按照以下…

用代码画两棵圣诞树送给你【附详细代码】

大家好,我是宁一 代码的魔力之处在于,可以帮我们实现许多奇奇怪怪、有趣的想法。 比如,用Python的Turtle库,可以帮我们在电脑上画出好看的图像。 下面这张樱花图就是用Turtle库实现的。 这不圣诞节快到啦。 那么就用代码来画一…

jsp servlet mysql实现的二手车汽车管理系统项目源码附带视频指导运行教程

今天给大家演示一下由jsp servlet mysql实现的一款简单的二手车汽车管理系统,系统设计采用了mvc分层的模式,结构非常清晰,功能虽简单,但是把所有可能用到的功能都实现了,往上面添加功能很简单,直接复制代码…

计算机网络学习笔记(Ⅲ):数据链路层

目录 1 数据链路层概述 1.1 基本概念 1.2 主要功能 2 封装成帧和透明传输 2.1 封装成帧 2.2 透明传输 1.字符计数法 2.字符填充法 3.零比特填充法 4.违规编码法 3 差错控制 3.1 差错 3.1 检错编码 1.奇偶校验码 2.CRC循环冗余码 3.2 纠错编码 1.确定校验码位数…

docker安装nginx代理nacos2.1.2版本集群

目录 安装docker最新版本 创建一个docker network,使之固定docker局域ip docker安装mysql主从 配置挂载的my.cnf配置文件 进入mysql主数据库容器命令 登录主数据库创建用于从数据连接主数据的账号密码 输入show master status;查看master数据库状态 在从数据库…

关于JVM:内容以及流程释义

对于JVM、GC、类加载,很多人摸不清楚头绪,不知道他们之间的关系。误以为GC和类加载还有JVM区分统称垃圾回收,实则他们包含的东西很多,很细,完整的了解正个JVM的加载过程,就需要全面理解这些东西。 我认为的…

如何在 Windows 10 上启用和设置 BitLocker 加密

启用和设置 BitLocker 加密 通过控制面板启用 BitLocker通过命令提示符启用 BitLockerBitlocker 可以使用控制面板中的图形界面或在命令提示符中执行一些命令来启用。在 Windows 10 上启用 Bitlocker 非常简单,但用户通常更喜欢通过控制面板而不是命令提示符来管理 Bitlocker …

Java数据结构与Java算法学习Day05---二叉树(简略笔记记录)

目录 一、二叉树 79 1.1树的基本定义79 1.2数的相关术语 80 1.3二叉树的基本定义 81 1.4二叉查找树的创建 82 1.4.1二叉树查找树创建---插入方法(put) 83 1.4.2二叉树查找树创建---获取方法(get)84 1.4.3二叉树查找树创建…

【测试沉思录】23. 如何实现基于场景的接口自动化测试用例?

作者:陈爱娇 编辑:毕小烦 自动化本身是为了提高工作效率,不论选择何种框架,何种开发语言,我们最终想实现的效果,就是让大家用最少的代码,最小的投入,完成自动化测试的工作。 基于这…

K-Means++代码实现

K-Means代码实现 数据集 https://download.csdn.net/download/qq_43629083/87246495 import pandas as pd import numpy as np import random import math %matplotlib inline from matplotlib import pyplot as plt# 按文件名读取整个文件 data pd.read_csv(data.csv)class…

学编程:Python入门考级必备[11]

目录 1.查找字符串 2.字符串的格式化 3.字符串的转义字符 \ \" 4. 修改字符串 5.字符串连接与分割 附件代码: 炼 知识模块(11) 名符其实--字符串 1.查找字符串 # 1.1用 in 函数 a aa in acacacacaabaac print(a) # 1.2 用index 找不到就报错 b h…

民办二本程序员阿里、百度、平安等五厂面经,5 份 offer(含真题)

昨天小休,一位高中同学联系了我,说是要请我吃饭,有这种好事,我当然是毫不犹豫的答应了啦! 等等...会不会是找我借钱的? 好慌,怎么办?已经答应过去了。 在后面的交谈中,…

Odoo丨如何在明细行中添加复选框?

最近,在项目实际业务中遇到需要对明细订单添加复选框和按钮进行操作的需求。 起初在拿到需求时,我联想到Odoo默认tree视图是有复选框和操作按钮的功能,于是查看了源码,确认了这个想法。 因为这个是属于字段中one2many 关系属性来…

三车道交通流元胞自动机研究(matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…