Hsql每日一题 | day01

ops/2024/9/23 6:26:06/

前言

就一直向前走吧,沿途的花终将绽放~

题目:找出连续活跃3天及以上的用户

sql">create table t_useractive(uid   string,dt    string
);insert into t_useractive
values('A','2023-10-01'),('A','2023-10-02'),('A','2023-10-03'),('A','2023-10-04'),('B','2023-10-01'),('B','2023-10-03'),('B','2023-10-04'),('B','2023-10-05'),('C','2023-10-01'),('C','2023-10-03'),('C','2023-10-05'),('C','2023-10-06'),('D','2023-10-02'),('D','2023-10-03'),('D','2023-10-05'),('D','2023-10-06');

hsql

sql">select uid
from (
select  uid
from(select uid,dt,row_number() over (partition by uid order by dt)  rn,date_sub(dt, row_number() over (partition by uid order by dt)) c1from t_useractive
) t1 group by uid,c1
having count(*) >= 3
)
t2 group by uid;

hsql分析:

  1. 子查询 t1:

    • t_useractive表中选择uiddt
    • 使用row_number() over (partition by uid order by dt)为每个用户的活动记录分配一个行号(按照日期排序)。这个行号被命名为rn
    • 接下来,计算一个名为c1的字段,该字段是日期dt减去行号rn的结果。这样做的目的是为了标记连续的日期,因为对于连续的日期,date_sub(dt, rn)的结果将是相同的。
  2. 子查询 t1 的分组:

    • 使用group by uid, c1对子查询t1的结果进行分组。由于c1字段对于连续的日期是相同的,因此这将把连续的日期记录分组在一起。
  3. having count(*) >= 3:

    • 筛选出那些组中记录数大于或等于3的组,这意味着这些组代表了连续3天或更多的活动。
  4. 外部查询 t2:

    • 由于内部查询已经筛选出了连续3天或更多的活动组,外部查询只需简单地按uid进行分组,并选择uid字段。这一步是为了确保每个用户只被列出一次,即使他们在不同的时间段内有多个连续的3天或更多天的活动。

最终,这个查询将返回所有在t_useractive表中至少有连续3天活动的用户的uid


http://www.ppmy.cn/ops/43909.html

相关文章

以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

以及Spring中为什么会出现IOC容器?Autowired和Resource注解? IOC容器发展史 没有IOC容器之前 首先说一下在Spring之前,我们的程序里面是没有IOC容器的,这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢?…

react实现动态增减表单项

在做项目的时候,甲方给的信息有限,网页的备案信息写成固定的,如下图所示 之后验收的时候,甲方要求把这个备案信息写成动态的,可以自增减,就去react组件库看看有没有具体的实现,果真有&#xff…

k8s devops实战教程+生产实践+可就业

k8s devops实战教程 简介教程涉及到内容教程获取学习教程后的收货助学群 简介 越来越多的企业应用云原生化,催生很多应用的部署方式也发生了很多变化。 从物理机部署应用过度到虚机部署应用再到应用容器化,从单应用再到服务拆分为微服务,靠人…

Linux-线程池

文章目录 前言一、线程池是什么?二、示例代码 前言 线程池主要是对之前内容的一个巩固,并且初步了解池化概念。 一、线程池是什么? 线程池就是提前开辟好一块空间,随时准备创造新线程来完成任务,可以理解为用空间来换…

python纯脚本搬砖DNF之深度学习,工作室适用

声明: 本文章仅作学习交流使用,对产生的任何影响,本人概不负责. 转载请注明出处:https://editor.csdn.net/md?articleId103674748 主要功能 脚本已初步完成,可以上机实战了 1.搬砖研究所、海伯伦(持续更新中) 2.自…

聚数力 以数兴 | 与“闽”同行,共话数字未来

闽江之畔,数智腾飞。5月24日,第七届数字中国建设峰会在海峡国际会展中心盛大举办。本届展会的主题是“释放数据要素价值,发展新质生产力”,由国家发展改革委、国家数据局、福建省人民政府等单位共同主办,福州市人民政府…

Python文件中动态导入多个.py文件

Python文件中动态导入多个.py文件 一、背景 在一些自动化脚本中,我们需要一些中间文件作为引用文件来处理一些自动化的工作,但是中间文件数量可能根据需求的变更发生不规律的变化,所以就需要一些读文件夹来自动获取这些需要引用的中间文件,下面就是我整理的一个能够实现动…

Hadoop学习之hdfs的操作

Hadoop学习之hdfs的操作 1.将HDFS中的文件复制到本地 package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.After; import org.junit.Before; import org.j…