首页 > 数据库 >尚硅谷大数据HiveSQL练习题(一)——同时在线人数问题

尚硅谷大数据HiveSQL练习题(一)——同时在线人数问题

时间:2023-09-15 21:57:47浏览次数:47  
标签:练习题 同时在线 00 12 HiveSQL live 01 2021 id

题目需求

现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。

user_id (用户id) live_id (直播间id) in_datetime(进入直播间的时间) out_datetime (离开直播间的时间)
100 1 2021-12-1 19:30:00 2021-12-1 19:53:00
100 2 2021-12-1 21:01:00 2021-12-1 22:00:00
101 1 2021-12-1 19:05:00 2021-12-1 20:55:00

现要求统计各直播间最大同时在线人数,期望结果如下:

live_id max_user_count
1 4
2 3
3 2

数据准备

drop table if exists live_events;
create table if not exists live_events
(
    user_id      int comment '用户id',
    live_id      int comment '直播id',
    in_datetime  string comment '进入直播间时间',
    out_datetime string comment '离开直播间时间'
)
    comment '直播间访问记录';
INSERT overwrite table live_events
VALUES (100, 1, '2021-12-01 19:00:00', '2021-12-01 19:28:00'),
    (100, 1, '2021-12-01 19:30:00', '2021-12-01 19:53:00'),
    (100, 2, '2021-12-01 21:01:00', '2021-12-01 22:00:00'),
    (101, 1, '2021-12-01 19:05:00', '2021-12-01 20:55:00'),
    (101, 2, '2021-12-01 21:05:00', '2021-12-01 21:58:00'),
    (102, 1, '2021-12-01 19:10:00', '2021-12-01 19:25:00'),
    (102, 2, '2021-12-01 19:55:00', '2021-12-01 21:00:00'),
    (102, 3, '2021-12-01 21:05:00', '2021-12-01 22:05:00'),
    (104, 1, '2021-12-01 19:00:00', '2021-12-01 20:59:00'),
    (104, 2, '2021-12-01 21:57:00', '2021-12-01 22:56:00'),
    (105, 2, '2021-12-01 19:10:00', '2021-12-01 19:18:00'),
    (106, 3, '2021-12-01 19:01:00', '2021-12-01 21:10:00');

思路分析

此题与牛客——SQL179 各城市最大同时等车人数相似思路

  1. 进入直播间,人数+1;离开直播间,人数-1

    select 
    	live_id,
        in_datetime as c_datetime,
        1           as action
    from live_events
    union all
    select live_id,
           out_datetime as c_datetime,
           -1           as action
    from live_eventst
    ;
    
  2. 对直播间分组,按日期降序开窗,sum进行统计即可

    sum(action) over (partition by live_id order by c_datetime) as n
    

完整代码

select
    live_id,
    max(n) as max_user_count
from (select *,
             sum(action) over (partition by live_id order by c_datetime) as n
      from (select live_id,
                   in_datetime as c_datetime,
                   1           as action
            from live_events
            union all
            select live_id,
                   out_datetime as c_datetime,
                   -1           as action
            from live_events) t
      ) t1
group by live_id
;

标签:练习题,同时在线,00,12,HiveSQL,live,01,2021,id
From: https://www.cnblogs.com/moliyy/p/17705980.html

相关文章

  • 课堂练习题整理
    实验:枚举值的foreach迭代总结:已大致了解枚举类(enum)的用法。1.toString():返回当前枚举类对象常量的名称。拿到枚举对象,直接打印输入此对象的信息而不是一个地址2.values():返回枚举类型的对象数组,该方法可以方便的遍历所有的枚举名称3.valuesOf(Stringstr):可以把一个字符串转......
  • MySQL查询语句及练习题
    查询记录查询数据库表中列的数据SELECT*,列名FROM表名WHERE条件GROUPBY分组HAVING过滤ORDERBY排序LIMIT分页查询分组查询GROUPBY子句用于根据一个或多个列对结果进行分组--统计员工表中职位的分类信息SELECTJ职位FROM员工表GROUPBY职位;--统计员工表......
  • oj练习题程序编程题
    打印图形Description按要求输出由*组成的图案Input无需输入Output输出下面由“组成的图案卡  11  print('*')print("***")print("*****")print("*")print("*")print("*")  11 ......
  • 第四章总练习题
    第1题需要构造新的连续函数,利用连续函数的性质证明。第3题考察有理数在实数中的稠密性。第4、6题考察连续函数的介值性。第7题考察单调有界原理。第11题考察一致连续,需要将大的区间分成两个小的区间,利用不同的性质分别证明一致连续,从而在大的区间上一致连续。......
  • 浙江省高校教师教育理论培训考试练习题库
    题库爬虫方案#%%importopenpyxlimportrequestsfrombs4importBeautifulSoupimportoperatorfromfunctoolsimportreduce#URL='http://www.hzwolf.com/dxxlx.htm'#大学心理学#URL='http://www.hzwolf.com/gdjyfg.htm'#高等教育法规#URL=�......
  • sql的常用练习题
    一、表结构1、学生表Student(Sid,Sname,Sage,Ssex)学生编号,学生姓名,出生年月,学生性别2、课程表Course(Cid,Cname,Tid)课程编号,课程名称,教师编号3、教师表Teacher(Tid,Tname)教师编号,教师姓名4、成绩表SC(Sid,Cid,Score)学生编号,课程编号,分数四个表之间的联系......
  • 组合数学第五章练习题(部分)
    组合数学第五章练习题(部分)11.\[\binom{n}{k}-\binom{n-3}{k}=\binom{n-1}{k-1}+\binom{n-2}{k-1}+\binom{n-3}{k-1}\]理树要在神北私立高级中学的\(n\)位女同学中挑选\(k\)位后宫,但是他必须走沙耶,佳奈多和撒撒撒撒撒米中的至少一条线,因为这是LBEX。......
  • 练习题 - Java编程案例
    当用户在Java程序中输入字符时,我们可以通过代码对这些字符进行判断和处理。在这篇博客中,我们将介绍如何使用Java编写一个程序,根据用户输入的字符进行判断,并进行相应的输出。首先,让我们来看看如何判断一个字符是否为元音字母(a、e、i、o、u)。我们可以使用Scanner类来获取用户输入的字......
  • 第二章总练习题
    重点习题:第3题及其应用(第4题).第5、6、7、8等题目都需要用到单调有界原理,重点把握这一重要的判断数列收敛的条件。  ......
  • python练习题01 碱基统计
     001、测试序列,碱基序列保存只a.fa文件中,统计下面这段序列中A、C、G、T碱基的个数[root@PC1test01]#lsa.fa[root@PC1test01]#cata.fa##测试fasta文件AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC 002、利用基本循环统计[ro......