首页 > 其他分享 >Hive 刷题——出勤率问题

Hive 刷题——出勤率问题

时间:2023-02-17 05:33:05浏览次数:32  
标签:02 06 Hive course user 2022 出勤率 id 刷题

需求描述

现有用户出勤表(user_login)如下。

user_id
(用户id)
course_id
(课程id)
login_in
(登录时间)
login_out
(登出时间)
1 1 2022-06-02 09:08:24 2022-06-02 10:09:36
1 1 2022-06-02 11:07:24 2022-06-02 11:44:21
1 2 2022-06-02 13:50:24 2022-06-02 14:21:50
2 2 2022-06-02 13:50:10 2022-06-02 15:30:20

课程报名表(course_apply)如下。

course_id
(课程id)
course_name
(课程名称)
user_id
(用户id)
1 java [1,2,3,4,5,6]
2 大数据 [1,2,3,6]
3 前端 [2,3,4,5]

注:出勤率指用户看直播时间超过40分钟,求出每个课程的出勤率(结果保留两位小数)。

期望结果如下:

course_id
<int>
(课程id)
adr
<decimal(16,2)>
(出勤率)
1 0.33
2 0.50
3 0.25

参考实现

select coalesce(t.course_id,t1.course_id) course_id, cast(nvl(t.cnt,0) / t1.user_cnt as decimal(16, 2)) as adr
from (select course_id, count(*) cnt
      from (select user_id, course_id, SUM(mins) mins_sum
            from (select user_id, course_id, (unix_timestamp(login_out) - unix_timestamp(login_in)) / 60 mins
                  from user_login) t
            group by user_id, course_id) i
      where mins_sum > 40
      group by course_id) t
         full join
     (select course_id, count(uid) user_cnt
      from (select course_id, uid
            from course_apply t
                     lateral view explode(user_id) t as uid
          group by uid, course_id) t1
      group by course_id) t1
         on t.course_id = t1.course_id ;、

标签:02,06,Hive,course,user,2022,出勤率,id,刷题
From: https://www.cnblogs.com/wdh01/p/17096776.html

相关文章

  • Leetcode刷题
    双指针系列26.删除有序数组的重复项题目的大致意思就是给一个数组,要求你再数组中删除重复的项,并返回删除后数组的长度。思路在这里想引入一个过滤器的思想,思......
  • 数据结构刷题2023.02.16小记
    Hash函数冲突处理方式开放定址法再哈希法链地址法设置公共溢出区法不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。正确顺序......
  • HIVE - HIVEQL学习笔记
    HiveLearningHIVEQL和MYSQL最为接近数据操作SHOWTABLESINcrm_integrationShowtables'dim_con*' DESCRIBEEXTENDEDcrm_integration.itg_fact_sales_orderDE......
  • Hive 刷题——员工在职人数问题
    需求描述现有用户表(emp)如下。id(员工id)en_dt(入职日期)le_dt(离职日期)10012020-01-02null10022020-01-022020-03-0510032020-02-022020-02-15100......
  • hadoop+hive+mysql+sqoop+spark完全分布式集群搭建
    hadoop+hive+mysql+sqoop+spark完全分布式集群搭建零、配置网络(固定ip)(可以不做,但是后面关闭后ip会重复变动,后面步骤中有再次提到,后面操作在做)1.固定ip因centos 7 ip......
  • 【牛客刷题】HJ68 成绩排序
    题目链接这题本身就是一个排序题,按照学生成绩排序,成绩一样的按照输入的前后顺序排。如果用Java,那么利用ArrayList能很轻松的完成:importjava.util.ArrayList;importja......
  • 数据结构刷题2023.02.15小记
    各排序算法时间复杂度如何提高哈希表的查找效率Hash表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小......
  • 报错:tar: This does not look like a tar archive
    一、现象解压时报错: 二、解决办法gzip-dxxxx.tar.gz(对于.tar.gz文件的处理方式)tar-xfxxxx.tar(对于.tar文件处理方式) 三、查看 ......
  • 【牛客刷题】HJ15 求int型正整数在内存中存储时1的个数
    题目链接题倒是很简单,最开始用了这么一种解法:packagemainimport"fmt"funcmain(){ a:=0 fmt.Scan(&a) str:=fmt.Sprintf("%b",a) fmt.Printf("%d",co......
  • Hive 面试题——HiveSQL 执行顺序
    描述今天刷到了一个面试题:hivesql执行顺序,接下来就从一个带有groupby的例子看看hivesql的执行顺序执行顺序为from..on..join..where..groupby..having......