2. 查询至少连续三天下单的用户

news2024/10/5 12:52:19

文章目录

        • 题目需求
        • 思路一
        • 实现一
        • 思路二
        • 实现二

题目需求

查询订单信息表(order_info)中 最少连续3天 下单的用户id,期望结果如下:

user_id
101

订单信息表:order_info

order_id
(订单id)
user_id
(用户id)
create_date (下单日期)total_amount
(订单金额)
11012021-09-3029000.00
101032020-10-0228000.00

思路一

通过与行号作差的方式判断是否连续(推荐)

在这里插入图片描述

实现一

-- 4) 按照 user_id, sub_res 进行分组,对每组记录进行计数,选出>=3的user_id
select
	distinct user_id
from
(
  -- 3)计算 create_date - row_num 得到 sub_res
  -- 2)对order_info中的每条记录编号。对 user_id 进行分组,组内按照 create_date 升序排序,并对每条记录使用 row_number 进行编号 row_num
  SELECT
      user_id,
      --create_date,
      --row_number() over(partition by user_id order by create_date) as  row_num
      date_add(create_date, -row_number() over(partition by user_id order by create_date))  as  sub_res
  from 
  (
    -- 1) 对用户进行去重。原因:用户一天可能存在多次下单的情况,我们此处只需要一次即可
    SELECT
      DISTINCT user_id,
      order_id,
      create_date
    from order_info
  )t1
)t2
group by user_id,sub_res having count(*)>=3;

思路二

通过 lead() 开窗函数获取往后第二次的登录日期

在这里插入图片描述

实现二

-- 3) 筛选出 sub_res=2 的记录
select
	DISTINCT user_id
from
(
  -- 2) 通过 lead() 开窗函数获取每个用户往后第二次的登录日期
  select
      user_id,
      -- lead(create_date, 2, '9999-12-31') over(partition by user_id order by create_date) next_2_date
      datediff(lead(create_date, 2, '9999-12-31') over(partition by user_id order by create_date), create_date) sub_res
  from
  (
    -- 1) 对用户进行去重。原因:用户一天可能存在多次下单的情况,我们此处只需要一次即可
    SELECT
        DISTINCT user_id,
        order_id,
        create_date
    from order_info
  )t1
)t2
where sub_res=2;

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

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

相关文章

MySQL 数据表修复方法

MySQL表检查与修复 — check/repair指令 目录 MySQL表检查与修复 --- check/repair指令1. 指令详解2. 操作方法:命令提示符(cmd指令)操作方法SQLyog 操作方法(推荐) 本文主要讲check table和repair table指令; 1. 指令详解 在检…

如何把图片转文字?图片转文字方法分享!​

如何把图片转文字呢?在我们日常的工作或者生活当中,总会遇到需要将图片中的文字提取出来整理出文档,比如同事领导给你发的文件,或者在自己看到了喜欢书的段落句子,想要摘抄下来,这些都是可以用图片转文字来…

C++ Vector容器使用方法详解

Vector概述 C 标准库向量类是序列容器的类模板。 向量以线性排列方式存储给定类型的元素,并允许快速随机访问任何元素。 向量是需要力求保证访问性能时的首选序列容器。vector是种容器,类似数组一样,但它的size可以动态改变。vector的元素在内…

【GESP】2023年06月图形化二级 -- 时间规划

文章目录 时间规划【题目描述】【输入描述】【输出描述】【参考答案】其他测试用例 时间规划 【题目描述】 默认小猫角色和白色背景,小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟。你能通过编程帮他做到吗? 【输入描述】 新建变量“…

餐饮市场分析(上)

阅读原文 研究某一类餐饮产品的市场概况,并在不同地区和品牌之间进行对比 一、数据需求 使用美团搜索商品返回的数据。 首先进入美团首页,切换到对应城市,并搜索感兴趣的关键词。接下来尝试翻页获取更多数据,点击下一页时发现页…

跨越时空限制,酷暑天气用VR看房是一种什么体验?

近年来,全球厄尔尼诺现象越来越频繁,夏季温度不断创下新高,持续大范围的高温天气让人们对出门“望而生畏”。很多购房者也不愿意在如此酷暑期间,四处奔波看房,酷暑天气让带看房效率大大降低,更有新闻报道&a…

Linux:LAMP-phpmyadmin

LAMP环境 (1条消息) Linux:LAMP搭建(全源码包安装)_鲍海超-GNUBHCkalitarro的博客-CSDN博客 phpmyadminphpMyAdminhttps://www.phpmyadmin.net/ 传进Linux tar xfz phpMyAdmin-5.2.1-all-languages.tar.gz 这个是解出来的包 mv phpMyAdmin-5.2.1-all-languages /…

【NOSQL数据库】Redis数据库的配置与优化一

目录 一、关系型数据库与非关系型数据库1.1关系型数据库1.2非关系型数据库1.3关系型数据库与非关系型数据库的区别1.3.1数据存储方式不同1.3.2扩展方式不同1.3.3对事务性的支持不同 1.4非关系型数据库产生的背景1.5总结 二、Redis简介2.1Redis的优点2.2使用场景2.3哪些数据适合…

大二网页设计实训-豆瓣首页(html+css)

免费开源一个前端网页,豆瓣首页,可以用来当实训等

探索神奇的甲方需求:提出异常要求的背后逻辑

在IT行业,每个人都可能遇到“神奇的甲方”和他们提出的匪夷所思甚至无厘头的需求。虽然这些要求可能让人摸不着头脑,但背后通常隐藏着某种逻辑和需求。让我们来探索一下这些“无理需求”背后的心理和可能的应对策略。 首先,为什么会出现这些…

Maven安装与配置详解

安装JDK JDK1.8所有版本官网下载链接: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 所有JDK下载地址: https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html 可参照我的另一篇博客 安…

Unity | HDRP高清渲染管线学习笔记:HDRP Custom Pass

目录 一、Custom Pass Volume组件介绍 1.Mode(模式) 2.Injection Point(注入点) 3.Priority 4.Fade Radius 5.custom passes 二、查看Custom Pass的渲染阶段 Custom Pass允许你执行以下操作(官方文档&#xff0…

Linux--在当前路径下创建目录/文件夹指令:mkdir

语法: mkdir [选项] 文件名 功能: 在当前目录下创建一个名为 “文件名”的目录 常用选项: -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些不存在的目录,即一次可以建立…

HTML5 游戏开发实战 | 贪吃蛇

在该游戏中,玩家操纵一条贪吃的蛇在长方形场地里行走,贪吃蛇按玩家所按的方向键折行,蛇头吃到食物(豆)后,分数加10分,蛇身会变长,如果贪吃蛇碰上墙壁或者自身的话,游戏就结束了(当然也可能是减去…

开放式耳机漏音严重吗?开放式耳机会不会吵到别人?

​在了解开放式耳机是否漏音的时候,首先要知道什么是开放式耳机。 开放式耳机是一种不入耳,没有封闭耳朵的蓝牙耳机,可以听歌的同时接收来自外界声音,安全性高,也减少长期佩戴耳机带来的负担,更适合运动佩…

E. Singers‘ Tour(数学推导)

Problem - 1618E - Codeforces 将n个城镇按顺序排列成一个环。这些城镇按顺时针顺序编号为1到n。在第i个城镇里,有一名歌手,他的曲目列表中每首歌的演唱时间为ai分钟,其中i∈[1,n]。 每位歌手按顺时针顺序访问所有n个城镇,并在…

为什么可以直接使用简单名字访问java.lang包中的公开类、接口

java.lang包中有一些基本类,在代码中访问这些公开的类、接口可以直接用简单的名字访问,而不需要用import语句显式导入。 先看下面两段示例代码,这两段代码的执行效果是一样的。 示例代码1–访问Math类的时候直接写简单的名字,而且…

pwn学习day4——ret2text

文章目录 原理&#xff1a;例子x64x32 原理&#xff1a; 覆盖函数返回地址到程序内存在的gadgets获取shell 例子 #include<stdio.h> #include<stdlib.h>void hint(){system("$0"); } int main(){char buf[0x10];printf("input: ");scanf(&q…

1.5、JAVA 初识JAVA运算符

1 运算符 1.1 概述 运算符 用于连接 表达式 的 操作数&#xff0c;并对操作数执行运算。 例如&#xff0c;表达式num1num2&#xff0c;其操作数是num1和num2&#xff0c;运算符是””。 在java语言中&#xff0c;运算符可分为5种类型&#xff1a; 算术运算符、赋值运算符、关…

数据中心可视化合集 | 图扑数字孪生机房,解锁运维新境界

IDC&#xff08;Internet Data Center&#xff09;数据中心可视化是指通过可视化的方式对数据中心的运行状态、资源使用情况、安全监控等进行展示和管理。可以帮助管理员更好地了解数据中心的运行情况和趋势&#xff0c;及时发现问题并采取措施&#xff0c;提高数据中心的运行效…