首页 > 数据库 >Hive SQL必刷练习题:同时在线人数问题(*****)

Hive SQL必刷练习题:同时在线人数问题(*****)

时间:2024-08-04 19:07:39浏览次数:19  
标签:练习题 同时在线 00 12 08 Hive live 2023 id

https://blog.csdn.net/Mikkkee/article/details/136776193

 

 

--Drop
DROP TABLE IF EXISTS test_live_events;
 
 
--DDL
CREATE TABLE IF NOT EXISTS test_live_events
(
    user_id      INT COMMENT '用户id',
    live_id      INT COMMENT '直播id',
    in_datetime  STRING COMMENT '进入直播间时间',
    out_datetime STRING COMMENT '离开直播间时间'
) COMMENT '直播间访问记录' STORED AS ORC TBLPROPERTIES ( "orc.compress" = "SNAPPY", "discover.partitions" = "false" );
 
 
--Insert items
INSERT OVERWRITE TABLE test_live_events VALUES 
(1010, 1, '2023-08-12 19:00:00', '2'),
(100, 1, '2023-08-12 19:30:00', '2023-08-12 19:53:00'),
(100, 2, '2023-08-12 21:01:00', '2023-08-12 22:00:00'),
(101, 1, '2023-08-12 19:05:00', '2023-08-12 20:55:00'),
(101, 2, '2023-08-12 21:05:00', '2023-08-12 21:58:00'),
(102, 1, '2023-08-12 21:05:00', '2023-08-12 22:05:00'),
(102, 2, '2023-08-12 19:00:00', '2023-08-12 20:59:00'),
(102, 3, '2023-08-12 21:05:00', '2023-08-12 22:05:00'),
(104, 1, '2023-08-12 19:00:00', '2023-08-12 20:59:00'),
(104, 2, '2023-08-12 21:57:00', '2023-08-12 22:56:00'),
(105, 2, '2023-08-12 19:10:00', '2023-08-12 19:18:00'),
(106, 3, '2023-08-12 19:01:00', '2023-08-12 21:10:00');









WITH tmp_live_status AS (

create table  tmp as 
SELECT 
  user_id,
  live_id,
  in_datetime AS event_time,
  1 AS status
FROM
  test_live_events
UNION ALL
SELECT 
  user_id,
  live_id,
  out_datetime AS event_time,
  -1 AS status
FROM
  test_live_events
)
--创建临时表 ,登入的时间 后面加个自动 为1  ,登出的时间 数据 加个自动 固定值为-1  两个数据结果集union 起来 
SELECT live_id, MAX(online_cnt) AS online_cnt FROM ( SELECT user_id, live_id, event_time, status, SUM(status) OVER (PARTITION BY live_id ORDER BY event_time) AS online_cnt
-- 基于 迁入\出 时间进行排序, 基于直播间id进行分组. sum 迁入迁出的度量值 . 最大的那个就是某个时间点的 直播间
最多人数 FROM tmp ) a GROUP BY live_id ;

 

标签:练习题,同时在线,00,12,08,Hive,live,2023,id
From: https://www.cnblogs.com/mengbin0546/p/18329570

相关文章

  • 【Java零基础视频教程】综合练习题(一)——基础练习
    文章目录基础练习飞机票打印素数生成验证码复制数组评委打分数字加密抽奖双色球基础练习飞机票机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。​按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)......
  • Caused by: java.lang.ClassNotFoundException:org.apache.hadoop.hive.conf.hiveConf
    在sqoop执行create-hive-table时候报错这样,java.io.IOException:原因是缺失jar包,可能是sqoop conf文件的sqoop-env-template.sh里面没有配置相关的hadoop hivezookeeper 的相关环境变量进入sqoop的conf文件下找到sqoop-env-template.sh进入添加相关得到环境变量(注意......
  • 支撑英雄联盟750万同时在线用户的聊天系统底层的CRDT是什么?
    CRDT是什么意思?CRDT是Conflict-FreeReplicatedDataTypes的缩写,直译的话即“无冲突可复制数据类型”。翻译过来还是一脸懵逼!用稍微通俗一点的话说:研究分布式系统,尤其是研究最终一致性分布式系统的过程中,一个最基本的问题就是,应该采用什么样的数据结构来保证最终一致性?CR......
  • 【hive聚合函数多行合并 】
    Hive是一种开源的数据仓库解决方案,它提供了一种将结构化和半结构化数据存储在Hadoop集群上的方法。Hive通过使用Hive查询语言(HQL)将数据转换为可查询的表格形式,使用户能够使用SQL类似的语法进行数据分析和查询。在Hive中,聚合函数在数据分析中扮演着重要的角色,而多行合并是一......
  • SQL进阶技巧:Hive如何巧解和差计算的递归问题?【应用案例2】
    目录0问题描述1数据准备2问题分析3小结 0问题描述有如下数据:反应了每月的页面浏览量现需要按照如下规则计算每月的累计阅读量,具体计算规则如下:最终结果如下:1数据准备withdataas(select'2024-01'asmonth,2aspvunionallselect'2024-02'asm......
  • Hive学习第十天--函数的用法结尾
    Hive自定义函数UserDefineFunction主要分为三大类:​ UDF:一对一​ UDTF:一对多​ UDAF:多对一注意:1、区分的条件只要看前后输入输出之后的行数的变化​ 2、UDF可以连续嵌套调用,类似于if语句UDF:一进一出定义UDF函数要注意下面几点:继承org.apache.hadoop.hive.ql.ex......
  • Hive学习第九天--函数的用法
    1.1 Hive窗口函数普通的聚合函数每组(Groupby)只返回一个值,而开窗函数则可为窗口中的每行都返回一个值。简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。开窗函数一般就是说的是over()函数,其窗口是由一个OVER子句定义的多行记录开窗函数一般分为两......
  • Java基础知识分享(二)相关练习题
    写在前面大家前面的方法和数组学的怎么样了,快来看看这些题你能不能快速地说出答案,数组和方法在Java学习中还是非常重要的,快来检测你的薄弱点在哪,及时查漏补缺!填空题1.数组会在内存中开辟一块连续固定大小的空间,每个空间相当于之前的一个变量,称为数组的元素。数组的长度一经确定......
  • Hive学习第八天--函数的用法
    Hive函数学习SQL练习1、count(*)、count(1)、count('字段名')区别从执行结果来看count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL最慢的count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL最快的count......
  • 【面试宝典】70道Hive高频题库整理(附答案背诵版)
    简述什么是Hive?Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。Hive定义了简单的SQL查询语言称为HiveQL,该语言允许熟悉SQL的用户查询数据。同时,Hive提供了一个元数据存......