SQL架构

表: UserVisits

+-------------+------+
| Column Name | Type |
+-------------+------+
| user_id     | int  |
| visit_date  | date |
+-------------+------+
该表没有主键。
该表包含用户访问某特定零售商的日期日志。

假设今天的日期是 '2021-1-1' 。

编写 SQL 语句,对于每个 user_id ,求出每次访问及其下一个访问(若该次访问是最后一次,则为今天)之间最大的空档期天数 window 。

返回结果表,按用户编号 user_id 排序。

查询格式如下示例所示:

UserVisits 表:
+---------+------------+
| user_id | visit_date |
+---------+------------+
| 1       | 2020-11-28 |
| 1       | 2020-10-20 |
| 1       | 2020-12-3  |
| 2       | 2020-10-5  |
| 2       | 2020-12-9  |
| 3       | 2020-11-11 |
+---------+------------+
结果表:
+---------+---------------+
| user_id | biggest_window|
+---------+---------------+
| 1       | 39            |
| 2       | 65            |
| 3       | 51            |
+---------+---------------+
对于第一个用户,问题中的空档期在以下日期之间:- 2020-10-20 至 2020-11-28 ,共计 39 天。- 2020-11-28 至 2020-12-3 ,共计 5 天。- 2020-12-3 至 2021-1-1 ,共计 29 天。
由此得出,最大的空档期为 39 天。
对于第二个用户,问题中的空档期在以下日期之间:- 2020-10-5 至 2020-12-9 ,共计 65 天。- 2020-12-9 至 2021-1-1 ,共计 23 天。
由此得出,最大的空档期为 65 天。
对于第三个用户,问题中的唯一空档期在 2020-11-11 至 2021-1-1 之间,共计 51 天。

select
user_id,max(days) biggest_window
from
(
select
user_id, datediff(lead(visit_date,1,'2021-01-01') over(partition by user_id order by visit_date),visit_date ) days
from
UserVisits
) s1
group by
user_id
order by user_id

1709. 访问日期之间最大的空档期相关推荐

  1. <数据库> LEAD函数的用法 Leetcode 1709. 访问日期之间最大的空档期

    对于一张表的一行数据而言,在其之上的是Lag, 在其之下的是Lead +---------+------------+         LAG()  ------------------------ ...

  2. 1683. 无效的推文 1693. 每天的领导和合伙人 1699. 两人之间的通话次数 1709. 访问日期之间最大的空档期

    char_length(str)[空格不是字符] (1)计算单位:字符 (2)不管汉字还是数字或者是字母都算是一个字符 length(str)[空格不是字符] (1)计算单位:字节 (2)utf8编码 ...

  3. leetcode 1709. 访问日期之间最大的空档期---窗口函数lead

    访问日期之间最大的空档期 题目分析:题目要求按照不同的id计算出空档期,当前最新的时间是2021-01-01.简单来说,就是按照日期进行排序后计算前后日期之间差距.我们可以使用lead函数把后面的日期 ...

  4. 【LeetCode-SQL】1709. 访问日期之间最大的空档期

    目录 一.题目 二.解决 1.lead() 2.UNION ALL+INNER JOIN+min()+max() 三.参考 一.题目 表: UserVisits +-------------+---- ...

  5. 1709. 访问日期之间最大的空档期(SQL)

    题目:https://leetcode-cn.com/problems/biggest-window-between-visits/ 表: UserVisits +-------------+---- ...

  6. leetcode中等之1709.访问日期之间最大的空档期

    表: UserVisits Column Name Type user_id int visit_date date 该表没有主键. 该表包含用户访问某特定零售商的日期日志. 问题 假设今天的日期是 ...

  7. 【LC中等】1709. 访问日期之间最大的空档期

    ❤️博客主页: 楚生辉 ❤️系列专栏:[LeetCode刷题] ❤️一句短话: 坚持不懈,孜孜不倦 1.题目描述 表: UserVisits +-------------+------+ | Colu ...

  8. Leetcode Mysql 1709. 访问日期之间最大的空档期(DAY 14)

    文章目录 原题题目 代码实现(首刷学习 Lead函数) 原题题目 代码实现(首刷学习 Lead函数) # Write your MySQL query statement below SELECT u ...

  9. lead 函数 ——《访问日期之间最大的空档期》LeetCode Plus 会员专享题【详细解析】Hive / MySQL

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 另外也欢迎大家 ...

最新文章

  1. 锁定计算机后等于睡眠吗,如何防止计算机自动进入睡眠和/或休眠状态?
  2. nstimer循环引用_NSTimer定时器进阶——详细介绍,循环引用分析与解决
  3. 6.STM32外设函数分类
  4. ubuntu 安装 opengl
  5. 11 为了进一步_小米11正式官宣!12月28号整装待发,这几点或成关键
  6. 选32位 64位 oracle,32位PLSQL配置为64位的Oracle和64位系统
  7. 百练OJ:2800:垂直直方图
  8. 漂亮的页面向导和Tab插件(Jquery)
  9. 【渝粤教育】电大中专测量学 (3)作业 题库
  10. Tecplot中如何提取水线面(自由表面)并绘图
  11. Java必考题目之JVM面试题目和答案
  12. 索尼首次展示其Airpeak电影摄制无人机
  13. linux-所有者与所属组的修改
  14. NLP之路-查看获取文本语料库
  15. 计算机基础与应用演示文稿教案,计算机应用基础教案82修饰演示文稿.pdf
  16. 解决Python print 输出文本显示 gbk 编码错误问题
  17. Latex 图注设置(图1:改为图1-1)
  18. 用靠谱助手多开玩梦幻西游手游
  19. 服务器无法通过系统,Day 10246 服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限...
  20. The Book Thief

热门文章

  1. 运维Ansible自动化工具概述
  2. 北交大计算机在线作业,北交18秋《计算机应用基础》在线作业一
  3. 虚拟机模拟搭建VMware虚拟化平台
  4. centos7源码安装mysql8.0_CentOS7.6安装MYSQL8.0
  5. 【Shopee热销选品】新加坡、马来西亚市场最新时装配饰类目
  6. 可以云端储存的便签软件 2022能云端同步的便签app
  7. weblogic12c集群搭建
  8. 深度解析:为什么说持续交付将统治IT运维?
  9. 深信服AC苹果用户上网认证失败,认证mac地址和用户终端mac地址不一致
  10. c mysql read错误_mysqlbinlog错误:Error in Log_event::read_log_event(): 'read error'