当前位置: 首页 > article >正文

Sql面试题二:请查询出用户连续三天登录的所有数据记录

问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录

id           dt

1    2024-04-25 
1    2024-04-26 
1    2024-04-27
1    2024-04-28
1    2024-04-30
1    2024-05-01
1    2024-05-02
1    2024-05-04
1    2024-05-05
2    2024-04-25
2    2024-04-28
2    2024-05-02
2    2024-05-03
2    2024-05-04

期望结果:

解析:

  • 功能:从 t3 中选择并返回所有符合条件的记录的 dt 列。t3 中的记录是那些具有符合条件的 chajv 值的行。(为了防止不同月份出现相同的差值而被分到一组,可以将id加入运算)

总结:

  1. 步骤 1 (t):为每个 id 内的记录生成按 dt 排序的排名。
  2. 步骤 2 (t1):计算一个新的字段 chajv,其值是 dt 中的日部分与 id(可以扩大一些倍数防止不同月份的重复) 和排名值的计算结果。
  3. 步骤 3 (t2):统计每个 id 和 chajv 组合出现的次数,保留那些出现次数大于或等于 3 次的组合。
  4. 步骤 4 (t3):从 t1 中筛选出那些 chajv 值在 t2 中的记录。
  5. 最终查询:返回这些记录中的 dt 列。

建表语句:

CREATE TABLE wo22 (
    id INT,
    dt STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' ';  -- 假设数据是逗号分隔的
LOAD DATA LOCAL INPATH '/home/wo20.txt' INTO TABLE wo22;
  1. with t as (
        select * ,row_number() over (partition by id order by dt) paim from wo22
    
    ),t1 as (
        select *, cast(substr(dt,9,2) as int)+cast(id as int)-paim chajv from t
    ),t2 as (
        select id,chajv,count(1) day from t1 group by id,chajv having day>=3)
    ,t3 as (
        select * from t1 where t1.chajv in (select chajv from t2)
    
    )select dt from t3


http://www.kler.cn/a/385446.html

相关文章:

  • 算法每日练 -- 双指针篇(持续更新中)
  • 设计者模式之策略模式
  • 第六十三周周报 GCN-CNNGA
  • 机器学习—sigmoid的替代品
  • 标准遗传算法-c++源程序
  • Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)
  • 使用混合 BERT 模型的情感分析分类系统
  • 战略共赢 软硬兼备|云途半导体与知从科技达成战略合作
  • 科研绘图系列:R语言热图和点图(heatmap dotplot)
  • Linux(ubuntu) 安装显卡驱动
  • oracle服务器意外宕机数据库启动失败故障处理记录
  • 【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)
  • 【数据结构】单向链表的模拟实现--Java
  • goframe开发一个企业网站 TOKEN 的使用11
  • 从0开始学习机器学习--Day15--梯度检验以及随机初始化
  • 【手势识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+机器学习+Django网页界面+算法模型
  • uniapp 整合 OpenLayers - 使用modify修改要素
  • Java教学新动力:SpringBoot辅助平台
  • DAY22|回溯算法Part01|LeetCode: 77. 组合、216.组合总和III 、17.电话号码的字母组合
  • 2024年入职_转行网络安全,该如何规划?
  • OJ06:206.反转链表
  • 保障性住房管理:SpringBoot技术优势分析
  • 化工厂主要涉及的自动化备件有哪些?
  • go语言中package详解
  • MySQL 8.0中的‘caching_sha2_password‘身份验证插件问题
  • Gemini 对话机器人加入开源盲水印技术来检测 AI 生成的内容