大数据面试SQL(二):每天最高峰同时直播人数

news2024/9/20 18:47:53

文章目录

每天最高峰同时直播人数

一、题目

二、分析

三、SQL实战

四、样例数据参考


每天最高峰同时直播人数

一、题目

有如下数据记录直播平台主播上播及下播时间,根据该数据计算出平台当天最高峰同时直播人数。

这里用主播名称做统计,前提是主播名称唯一,不能出现重复,平台有名称重复验证。

样例数据:

目标结果:

二、分析

查询每天同时最大人数,考察的是对拉链转化为日志的处理方式以及聚合函数的累积计算。

维度评分
题目难度⭐️⭐️⭐️⭐️
题目清晰度⭐️⭐️⭐️⭐️⭐️
业务常见度⭐️⭐️⭐️⭐️⭐️

三、SQL实战

平台每天最高峰同时直播人数分析如下:

1、首先对原始数据进行处理,生成主播上下播的日志数据,同时增加人数变化字段,主播上播为1,主播下播-1。新数据包含 user_name,action_time,day_time,change_cnt

查询语句: 

--开播记录
select
user_name,
start_time as action_time,
to_date(start_time) as day_time,
1 as change_cnt
from t1_livestream_log
union all 
--下播记录
select
user_name,
end_time as action_time,
to_date(end_time) as day_time,
-1 as change_cnt
from t1_livestream_log

查询结果:

2、对操作日志按照操作时间进行累积求和

查询语句:

with t as(
--开播记录
select
user_name,
start_time as action_time,
to_date(start_time) as day_time,
1 as change_cnt
from t1_livestream_log
union all 
--下播记录
select
user_name,
end_time as action_time,
to_date(end_time) as day_time,
-1 as change_cnt
from t1_livestream_log
)
select
user_name,
action_time,
day_time,
change_cnt,
sum(change_cnt)over(partition by day_time order by action_time asc) as online_cnt
from t;

查询结果:

3、求取累计求和中的最大值,即为当天最高峰同时直播人数

查询语句:

with t as(
--开播记录
select
user_name,
start_time as action_time,
to_date(start_time) as day_time,
1 as change_cnt
from t1_livestream_log
union all 
--下播记录
select
user_name,
end_time as action_time,
to_date(end_time) as day_time,
-1 as change_cnt
from t1_livestream_log
)
select 
day_time,
max(online_cnt) as max_online_cnt
from
(
select
user_name,
action_time,
change_cnt,
day_time,
sum(change_cnt)over(partition by day_time order by action_time asc) as online_cnt
from t
) tt
group by day_time;

查询结果:

四、样例数据参考

CREATE TABLE IF NOT EXISTS t1_livestream_log (
    user_name STRING, -- 主播名称
    start_time STRING, -- 开始时间
    end_time STRING -- 结束时间
);
 
insert into t1_livestream_log(user_name, start_time, end_time) values
('亚瑟','2024-06-29 01:00:00','2024-06-29 02:01:05'),
('曹操','2024-06-29 01:05:00','2024-06-29 02:03:18'),
('孙悟空','2024-06-29 02:00:00','2024-06-29 04:03:22'),
('花木兰','2024-06-29 03:15:07','2024-06-29 04:33:21'),
('露娜','2024-06-29 03:34:16','2024-06-29 06:10:45'),
('云缨','2024-06-29 05:22:00','2024-06-29 07:01:08'),
('姬小满','2024-06-29 06:11:03','2024-06-29 09:26:05'),
('哪吒','2024-06-29 08:00:00','2024-06-29 12:34:27'),
('亚瑟','2024-06-29 11:00:00','2024-06-29 16:03:18'),
('沈梦溪','2024-06-29 15:00:00','2024-06-29 17:01:05'),
('姜子牙','2024-07-29 01:00:00','2024-07-29 02:01:05'),
('高渐离','2024-07-29 01:05:00','2024-07-29 02:03:18'),
('张良','2024-07-29 02:00:00','2024-07-29 04:03:22'),
('甄姬','2024-07-29 03:15:07','2024-07-29 04:33:21'),
('金蝉','2024-07-29 03:34:16','2024-07-29 06:10:45'),
('鲁班七号','2024-07-29 05:22:00','2024-07-29 07:01:08'),
('后羿','2024-07-29 06:11:03','2024-07-29 09:26:05'),
('哪吒','2024-07-29 08:00:00','2024-07-29 12:34:27'),
('鲁班七号','2024-07-29 11:00:00','2024-07-29 16:03:18'),
('后羿','2024-07-29 15:00:00','2024-07-29 17:01:05');

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现

用数据表格table展示系统数据,是LayUI的基本功能,编码十分简单,就是通过table.render()渲染,把属性配置好就OK了,十分方便,功能也十分强大。 不过,在实现时,把table的有个功能却理解…

WPF MVVM实现TreeView层级显示

最近在写一个小工具的时候,遇到TreeView的层级显示,刚好我又用了MVVM模式,所以这里做个总结。 以前我是直接绑定XML数据到TreeView的,使用的XmlDataProvider,这次的数据是直接来自数据库的。 用到的都是Hierarchical…

Element学习(入门)(1)

1、Element官网:https://element.eleme.cn/#/zh-CN 2、来源与用处 3、Element的快速入门 (1) (2)在入口文件(main.js)中引入 (3) 4、快捷键ctrlc,在当前的项目…

【SpringBoot】自定义注解 I18n <约定式>国际化 (源码分享直接Copy)

0. 已做全新升级版 链接:【SpringBoot】自定义注解终极升级版<i18n国际化>方案源码Copy 链接:【SpringBoot】自定义注解终极升级版<i18n国际化>方案源码Copy 链接:【SpringBoot】自定义注解终…

【电子电路学习笔记】——模电笔记

关于专栏:本专栏用于分享学习电子电路过程中记录的笔记。模电部分使用的教材是高等教育出版社,华成英主编的《模拟电子技术基础(第六版)》(其他版本的内容差不多,建议使用最新版教材)&#xff1…

【完全二叉树的权值】

题目 代码1&#xff08;队列&#xff09; #include<bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int, int> PII;const int N 1e510; int n; long long a[N]; queue<PII> q; long long sum[25]; int main() {memset(…

Leetcode—233. 数字 1 的个数【困难】

2024每日刷题&#xff08;152&#xff09; Leetcode—233. 数字 1 的个数 算法思想 参考自k神 实现代码 class Solution { public:int countDigitOne(int n) {long digit 1;long high n / 10;long low 0;long cur n % 10;long ans 0;while(high ! 0 || cur ! 0) {if(cu…

Python Web开发之“基于flask的轻量级Web应用”

参考文章1&#xff1a;https://cloud.tencent.com/developer/article/2373503 参考文章2&#xff1a;基于Flask的自定义网站设计与实现&#xff08;代码全文讲解V1.0&#xff09;_flask框架制作网页-CSDN博客 参考文章3&#xff1a;PythonFlaskMysqL设计网页 - 李明惠 - 博客…

Candance Allegro 入门教程笔记:如何绘制PCB封装库?

文章目录 一、PCB封装库的组成元素二、使用Padstack Edictor制作封装焊盘引脚三、PCB Editor软件创建贴片封装&#xff08;STM32F103T8U6 QFN36 为例&#xff09;3.1、新建PCB封装对象3.2、计算引脚启始坐标3.3、添加焊盘Pad路径3.4、放置焊盘引脚3.5、绘制装配线3.6、放置字符…

sqli-labs-php7-master\Less-1

1&#xff0c;进入mysql数据库 mysql -u root -p 接着&#xff1a; show databases; use security; select * from where id1 LIMIT 0,1; 函数的基本用法 system_user() #当前系统用户 user() #当前登录用户 current_user() #当前登录用…

MOS场效应管常见损坏原因

造成损坏的原因可能有几个: 1.缺少保护电路&#xff0c;一般来说电路中应适当设置保护电路&#xff0c;以吸收电路中的瞬间高压&#xff0c;浪涌电压保护关键元件。 2.参数选取不合理&#xff0c;没有余地&#xff1b;场效应管的耐压&#xff0c;电流都应该流有一定的余地&…

【网络】网络层

网络层 一、前置知识二、IP协议1、协议头格式2、网段划分3、特殊的IP地址&#xff1a;4、IP地址数量限制5、私有IP地址和公网IP地址6、浅谈运营商7、路由8、IP分片 一、前置知识 1、首先要对每台主机要有一个唯一标识符&#xff0c;所以要有源ip地址和目的ip地址来标识目的主机…

linux包管理工具与软件安装

目录 TAR工具的使用 常用选项&#xff1a; 对文件进行打包 查看文件包 向包文件里放添加文件 解包到当前路径 解包到指定路径 zip工具的使用 gzip压缩 bzip2压缩 gzip解压缩 bzip2解压缩 查看压缩文件内有哪些文件 将当前目录下压缩文件解压到指定目录下 软件安…

OpenGL ES->工作机制

渲染流程 渲染目的&#xff1a;输入3D立体坐标&#xff0c;输出绘制后的2D平面像素工作流程&#xff1a;顶点着色器->图元装配->几何着色器->光栅化->片段着色器->测试与混合&#xff0c;整个工作流程被封装在GPU内部&#xff0c;无法改变。运行在CPU的代码调用…

word加密文档忘记密码要如何打开

我们在日常工作中&#xff0c;经常需要使用word来编写文档&#xff0c;有时为了保证资料的安全性&#xff0c;会给word文档加密。虽然这样可以保障安全&#xff0c;但时间间隔一长就容易忘记密码&#xff0c;word又没有密码重置功能&#xff0c;忘记密码就很麻烦&#xff01;那…

Jenkins 部署Vue项目指引: Vue项目本地跨域代理 、解决ERR_UNSAFE_PORT

文章目录 引言I Jenkins 部署Vue项目配置插件安装系统配置NodeJS安装目录和别名设置新建任务(通用类型)构建环境Build Steps(构建步骤)II nginx部署站点(端口和站点目录的映射)查找Nginx配置文件端口和站点目录的映射III Vue项目本地跨域代理,屏蔽掉后端服务API的网关IP…

设计模式-领域逻辑模式-数据源架构模式

行数据入口&#xff08;Row Data Gateway&#xff09; 充当数据源中单条记录入口的对象。每行一个实例 运行机制 行数据入口和单条记录极为相似&#xff0c;数据库中的每一列变成了一个域。适用于事务脚本只能设置单独的查找方法对象&#xff0c;对行数据入口进行操作。如果行…

golang判断某个文件内容是否是二进制文件方法, LimitReader, 获取文件大小,字符串0写入后的byte数据为48, byte零值

go语言中判断某个文件是否是二进制文件的方法&#xff0c; 通过LimitReader读取指定大小的数据后对数据进行判断&#xff0c; 这里有一个很有趣的知识点就是 字符串0在写入文件后&#xff0c;再通过io read读取后的byte数据他在内存中显示的可不是0 而是变成了 48, 十六进制 0x…

Java Web——第二天

什么是JavaScript? JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言。是用来控制网页行为的&#xff0c;它能使网页可交互 JavaScript和Java是完全不同的语言&#xff0c;不论是概念还是设计。但是基础语法类似 JavaScript在1995年由 Brendan Eich 发明&#xff0c;…

8月6日Spring Boot学习笔记

MyBatis动态SQL 动态 SQL 大大减少了编写代码的工作量&#xff0c;更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 if标签 <if test"判断条件">SQL语句</if> 当判断条件为 true 时&#xff0c;才会执行所包含的 SQL 语句。 choose、when和otherw…