首页 > 数据库 >hive SQL案例

hive SQL案例

时间:2023-08-27 10:22:58浏览次数:36  
标签:rn1 hive 案例 user SQL date dt2 login id

  • 上个月用户连续n天登录天数

用户登录记录表user_login,包括用户id(user_id)、日期(login_date)
user_id login_date
12333256 2021-01-03
84272916 2021-01-03
94038271 2021-01-02
201934012 2021-01-03
过滤出当月数据:where login_date > ''
转换成date:to_date函数,参数默认按照"yyyy-MM-dd"的格式 去重:一天可能有多次登录记录(distinct、group by、row_number); 开窗排序,生成rn1:按user_id分区,login_date排序 login_date与rn1作差得到新日期dt2:date_sub(login_date, rn1) 统计天数:按user_id、dt2分组,再使用count(1)统计连续登录天数 开窗排序,生成rn2:按user_id分区,count(1)排序
with t1 as (
    select
        user_id, 
        to_date(login_date) as dt1,
        row_number() over(partition by user_id order by to_date(login_date)) as rn1
    from db.user_login
    where login_date > '2023-07-31'
    group by user_id, to_date(login_date)
),
t2 as (
    select
        user_id,
        date_sub(dt1, rn1) as dt2
    from t1
),
t3 as (
    select
        user_id,
        dt2,
        count(1) as continuous_day,
        row_number() over(partition by user_id order by count(1) desc) rn2
    from t2
    group by user_id, dt2
)
select
    user_id,
    dt2
from t3
where rn2 = 1;
View Code

 

 

标签:rn1,hive,案例,user,SQL,date,dt2,login,id
From: https://www.cnblogs.com/lcmichelle/p/17659916.html

相关文章

  • windows10下SQL Prompt安装图文教程
    一、下载安装官网或者教程:www.red-gate.comvs可以去插件库       二、激活失效激活失效:方法1:在本地hosts加入以下代码:127.0.0.1licensing.red-gate.com127.0.0.1www.red-gate.com127.0.0.1red-gate.com127.0.0.1productusage.red-gate.com127.0.......
  • MySQL事务
    2023.8.261.事务的四大特性A原子性C一致性I隔离性D持久性2.会出现的问题脏读:读到了另一个事物中未提交的修改不可重复读:一个事务前后两次因为另一个事务做了修改或导致读到的数据不同幻读:一个事务前后两次因为另一个事务做了新增而读取到了......
  • MySQL.js用法
    mysql.js是一个用于连接MySQL数据库的JavaScript库。以下是一些常用的方法及其详细参数说明: 1.创建连接对象: ```javascriptconstmysql=require('mysql');constconnection=mysql.createConnection({ host:'localhost',//数据库地址 user:'root',//数据......
  • 【13.0】sqlalchemy 集成到Flask框架
    【在Flask中集成SQLAlchemy】在Flask中集成SQLAlchemy可以通过使用第三方扩展包flask-sqlalchemy来实现,以下是详细的步骤和说明:首先,需要导入SQLAlchemy类以及flask_sqlalchemy模块:fromflask_sqlalchemyimportSQLAlchemy实例化SQLAlchemy对象:db=SQLAlchemy()这个......
  • Postgresql 批量插入命令COPY使用
    在很多场景下,我们经常会遇到将某个Excel或Csv文件中的数据,插入到Postgresql。对于这个需求,我们常规的处理办法就是将文件中的数据,按照文件表头名称转换成集合对象然后插入到数据库,当然这对于数据体量不大的文件而言,很显眼没有任何问题,但是如果数据体量一旦上来,将面临如下问题:将......
  • python sqlalchemy 框架
     1. SQLAlchemy简介SQLAlchemy是一个PythonSQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。它提供了一整套广为人知的企业级持久性模式,旨在实现高效和高性能的数据库访问,并将其转化为简单且Pythonic的领域语言。以下是SQLAlchemy的一些主要特......
  • 一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,......
  • sql 日期相关
    计算时间差--可计算time_start-time_end的时间差,单位以指定的interval为准--(second,minute,hour,day,month,year)timestampdiff(interval,time_start,time_end)--date_format函数用于以不同的格式显示日期/时间数据--数据库中的数据存储形式:--date:YYYY-M......
  • MySQL 8与复制可观察性
    许多老MySQLDBA都使用showreplicastatus中的seconds_behind_source来了解(异步)复制的状态和正确执行情况。不过,MySQL复制已经有了很大的发展,复制团队已经努力为MySQL的所有复制方式提供了大量有用的信息。例如,增加了并行复制、组复制......所有这些信息都是老的showreplica......
  • mysql中truncate表对auto_increment的影响
    在mysql中,如果对表执行truncate操作后,会重新设置auto_increment的值,比如:root@localhost(none)>useabce;Databasechangedroot@localhostabce>createtabletest(idintnotnullauto_incrementprimarykey,ageint);QueryOK,0rowsaffected(0.02sec)root@localho......