首页 > 其他分享 >Hive 刷题——连续签到送金币

Hive 刷题——连续签到送金币

时间:2023-02-19 08:55:35浏览次数:25  
标签:00 签到 09 Hive user date login id 刷题

需求描述

用户每天签到可以领1金币,并可以累计签到天数,连续签到的第3、7天分别可以额外领2和6金币。
每连续签到7天重新累积签到天数。
从用户登录明细表中求出每个用户金币总数,并按照金币总数倒序排序

结果如下:

user_id
<string>
(用户id)
sum_coin_cn
<bigint>
(金币总数)
101 7
109 3
107 3
102 3
106 2
104 2
103 2
1010 2
108 1
105 1

需要用到的表:

用户登录明细表:user_login_detail

user_id(用户id)ip_address(ip地址)login_ts(登录时间)logout_ts(登出时间)
101 180.149.130.161 2021-09-21 08:00:00 2021-09-27 08:30:00
102 120.245.11.2 2021-09-22 09:00:00 2021-09-27 09:30:00
103 27.184.97.3 2021-09-23 10:00:00 2021-09-27 10:30:00

 

参考实现

select user_id, sum(case when rn = 3 then 3 when rn = 7 then 7 else 1 end) sum_coin_cn
from (select user_id, next_date, row_number() over (partition by user_id,next_date order by rn) rn
      from (select user_id, login_date, rn, date_sub(login_date, rn) next_date
            from (select user_id, login_date, row_number() over (partition by user_id order by login_date) rn
                  from (select user_id, date(login_ts) login_date
                        from user_login_detail
                        group by user_id, date(login_ts)) y) y) t) t
group by user_id;

标签:00,签到,09,Hive,user,date,login,id,刷题
From: https://www.cnblogs.com/wdh01/p/17096966.html

相关文章

  • 算法刷题-字符串排序-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题-字符串反转-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题-字符串分隔-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题 Day 43 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
    1049.最后一块石头的重量II本题就和昨天的416.分割等和子集很像了,可以尝试先自己思考做一做。视频讲解:https://www.bilibili.com/video/BV14M411C7oVhttps://p......
  • 算法刷题-计算某字符出现次数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 2023/02/14刷题
    2023/02/14刷题B.KuriyamaMirai'sStones链接B.KuriyamaMirai'sStones这是一个前缀和问题,分别求一下原数组的前缀和和排序后数组的前缀和然后按照询问输出就可以......
  • 算法刷题-只出现一次的数字、输出每天是应该学习还是休息还是锻炼、将有序数组转换为
    只出现一次的数字(位运算、数组)给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复......
  • 数据结构刷题2023.02.18小记
    连通分量一个无向图的连通分量是其极大的连通子图无向图中任意两个节点之间有连通,则称为连通图。每一个非连通图可分为几个极大连通部分,每一个极大连通子图称为连通分量;......
  • Hive 刷题——视频热度问题
    需求描述现有用户视频播放记录表(user_video_log)如下。uid(球队名称)video_id(视频id)start_time(开始时间)end_time(结束时间)if_like(是否点赞)if_retweet(是否喜欢)c......
  • 算法刷题 Day 42 | ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组
    正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,但基本理解的都不够深入。如果是直接从来没听过背包问题,可以先看文字讲解慢慢了......