hive - 面试题 - 最近一次购物在一年前(近一年内无购物)

2023-11-12

要求:
有表:用户id,订单id,下单日期
该用户符合365天内无交易且当日有交易的数据打标签,如果当天有多条记录,同样打标签。

思路:
当前订单时间 - 最近一次的下单时间 >= 365 ,即最近365天内无订单记录。
中间有个问题,一天内多次下单,只能先写子查询去重,后续再关联出全天所有记录,不知道有没有其他合适的方式。

WITH o AS 
(
    SELECT  '01' AS userid
            ,'1001' AS orderid
            ,CAST('2023-01-01' AS DATE) AS paydate
    UNION ALL
    SELECT  '01' AS userid
            ,'1002' AS orderid
            ,CAST('2024-08-02' AS DATE) AS paydate
    UNION ALL
    SELECT  '01' AS userid
            ,'1003' AS orderid
            ,CAST('2024-08-02' AS DATE) AS paydate
    UNION ALL
    SELECT  '02' AS userid
            ,'1000' AS orderid
            ,CAST('2021-01-01' AS DATE) AS paydate
    UNION ALL
    SELECT  '02' AS userid
            ,'1004' AS orderid
            ,CAST('2023-01-02' AS DATE) AS paydate
    UNION ALL
    SELECT  '02' AS userid
            ,'1005' AS orderid
            ,CAST('2023-08-02' AS DATE) AS paydate
    UNION ALL
    SELECT  '03' AS userid
            ,'1006' AS orderid
            ,CAST('2023-01-01' AS DATE) AS paydate
)
SELECT  o.*
        ,d.flag
FROM    o AS o
LEFT JOIN   (
                SELECT  userid
                        ,paydate
                        ,f_date
                        ,CASE   WHEN DATEDIFF(paydate,f_date) >= 365 THEN 'yes'
                                ELSE 'no'
                        END AS flag
                FROM    (
                            SELECT  userid
                                    ,paydate
                                    ,LAG(paydate,1,'') OVER (PARTITION BY userid ORDER BY paydate ASC ) AS f_date
                            FROM    (
                                        SELECT  userid
                                                ,paydate
                                        FROM    o
                                        GROUP BY userid
                                                 ,paydate
                                    ) AS c
                        ) AS a
            ) AS d
ON      o.userid = d.userid
AND     o.paydate = d.paydate
;




结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive - 面试题 - 最近一次购物在一年前(近一年内无购物) 的相关文章

随机推荐

  • centos升级g++7.3.0

    sudo yum install centos release scl sudo yum install devtoolset 7 scl enable devtoolset 7 bash
  • Dubbo分布式日志追踪

    很多互联网公司都用的dubbo分布式框架进行微服务的开发 一个大系统往往会被拆分成很多不同的子系统 并且子系统还会部署多台机器 当其中一个系统出问题了 查看日志十分麻烦 所以我们需要一个固定的流程ID和机器ip地址等来把所有的日志穿起来 当
  • 如何安装vcpk

    如何安装vcpk 要安装 3fd 库 首先你需要安装 vcpkg 包管理器 以下是安装 vcpkg 的步骤 打开一个命令行终端 如 Windows 的命令提示符或 PowerShell 或者 Linux Mac 的终端 克隆 vcpkg 存
  • [云原生专题-53]:Kubesphere云治理-操作-通过Kubesphere应用商店一键部署微服务应用-消息中间件RabbitMQ的安装与部署

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122933831 目录 前言 第1章
  • exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

    exportfs命令 参数说明如下 a 全部挂载 或卸载 etc exports文件内的设定 r 重新挂载 etc exports中的设置 此外同步更新 etc exports及 var lib nfs xtab中的内容 u 卸载某一目录
  • python面向对象编程 类与实例 继承与多态 isinstance

    class Student object def init self name gender self name name self gender gender def set gender self gender if gender ma
  • C语言学习

    目录 原码反码和补码 原码 true code 反码 complemental code 补码 ones complement code 溢出的处理 位运算符 移位操作符 lt lt gt gt lt lt 左移 gt gt 右移 按位操作
  • 2023深圳杯 C题无人机协同避障航迹规划 最新论文

    完整论文已发布 目录 无人机协同避障航迹规划 摘要 一 问题重述 1 1 背景 1 2 重述 二 模型的假设 三 符号说明 四 问题分析 4 1 问题一分析
  • IDEA 打开SpringBoot服务控制台,管理多个服务

    IDEA 打开SpringBoot服务控制台 管理多个服务 作者简介 努力的clz 一个努力编程的菜鸟 文章专栏 软件使用技巧 记录一下平时开发过程中 使用各种 编程软件 的一些使用技巧 实现步骤如下 第一步 选择 视图 工具窗口 服务 第
  • 传统数据库也能实现区块链存储

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 本文节选自电子书 Netkiller Architect 手札 延伸阅读 Netkiller Blockchain 手札 微信订阅号 netkiller ebook 微信扫
  • shell脚本:函数

    shell脚本 函数 一 函数 1 定义 2 作用 3 格式 二 函数传参 1 定义 2 函数变量 3 递归 4 函数库 一 函数 1 定义 1 将命令序列按格式写在一起 2 可方便重复使用命令 2 作用 1 避免代码重复 2 把大工程分割
  • 2019南邮年微机原理及应用复试真题

    2019南邮年微机原理及应用复试真题 一 填空题 1 46的原码 反码以及补码的十六进制 H H H 2 8254实现日时钟定时的是 号计数器 计数初值 通常输出周期 3 每一个8254中有三个 位计数器 每一个计数器有 种工作方式 4 8
  • MMselfSup训练自监督模型之mocov3

    一 环境搭建 1 创建虚拟环境 conda create name openmmlab python 3 8 y 激活虚拟环境 conda activate openmmlab 2 安装pytorch torchvision 根据自己的配置
  • java 读取excel数据

    本文共介绍两种方式 第一种是常规POI读取 第二种是大文件读取 依赖包
  • AbstractQueuedSynchronizer(AQS) 原理

    一 AQS 简介 1 1 AQS 是什么 AQS AbstractQueuedSynchronizer 抽象队列同步器 是一个用来构建锁和同步器的框架 使用 AQS 能简单且高效地构造出应用广泛的大量的同步器 比如我们提到的 Reentra
  • 高光谱图像处理

    Development of a classification algorithm for efficient handling of multiple classes in sorting systems basesd on hypers
  • ps语义分割_解决实例分割任务中边缘不够精细:PointRend: Image Segmentation as Rendering...

    加入极市专业CV交流群 与6000 来自腾讯 华为 百度 北大 清华 中科院等名企名校视觉开发者互动交流 更有机会与李开复老师等大牛群内互动 同时提供每月大咖直播分享 真实项目需求对接 干货资讯汇总 行业技术交流 关注 极市平台 公众号 回
  • 计算机网络基础知识整理

    计算机网络 用通信设备和线路将处在不同地理位置 操作相对独立的多台计算机连接起来 并配置相应的系统和应用软件 在原本各自独立的计算机之间实现软硬件资源共享和信息传递等功能的系统 计算机网络的功能 数据通信 2 资源共享 3 增加可靠性 4
  • 【技术解析笔记】DDPM解析

    本文为youtube上一个ddpm解析视频的摘录笔记 youtube原视频链接 https www youtube com watch v W O7AZNzbzQ 基本介绍 DDPM指的是Denoising diffusion probal
  • hive - 面试题 - 最近一次购物在一年前(近一年内无购物)

    要求 有表 用户id 订单id 下单日期 该用户符合365天内无交易且当日有交易的数据打标签 如果当天有多条记录 同样打标签 思路 当前订单时间 最近一次的下单时间 gt 365 即最近365天内无订单记录 中间有个问题 一天内多次下单 只