首页 > 数据库 >SQL 刷题—直播间人气值

SQL 刷题—直播间人气值

时间:2023-04-05 21:34:23浏览次数:41  
标签:直播间 sum t1 人气值 live SQL duration id 刷题

需求描述

直播间开播记录表 t_live和直播间观看记录表t_look_log 数据如下:

create table t_live
(
    author_id     integer, --博主
    live_id       integer, --直播间ID
    live_duration integer  --开播时长
);
insert into t_live
values (1, 1, 60),
       (2, 2, 120),
       (3, 3, 50);
 --观看记录表
create table t_look_log
(
    user_id           integer,
    live_id           integer,
    watching_duration integer
);
insert into t_look_log
values (11, 1, 60),
       (12, 1, 30),
       (13, 1, 60),
       (8, 2, 30),
       (9, 1, 50);

需求1:求每个直播间的ACU:平均同时在线人数,观众观看时长总计/某场直播开播时长,无人观看显示0;

需求2:求每个直播间观看时占所有直播间观看时长的比值

需求实现

PostgreSQL 实现

需求1

需求1的计算公式已给出,我们直接汇总观看记录表的观看时长按直播间ID汇总即可,然后拿直播间开播信息表和刚才的汇总信息进行关联即可’,具体实现如下:

select t.author_id, t.live_id, coalesce(round((t1.duration_sum / t.live_duration::numeric), 2), 0) acu
from t_live t
         left join (select live_id, sum(watching_duration) duration_sum from t_look_log group by live_id) t1
                   on t.live_id = t1.live_id
;

需求2

需求2需求先求所有用户的观看时长,然后进行关联即可

select t.live_id,
      concat ( round(coalesce(t1.duration_sum, 0) / sum(coalesce(t1.duration_sum, 0) ) over ()*100,2),'%' ) duration_rate
from t_live t
         left join (select live_id, sum(watching_duration) duration_sum from t_look_log group by live_id) t1
                   on t.live_id = t1.live_id

Hive 实现

需求1

select t.author_id, t.live_id, nvl(round((t1.duration_sum / t.live_duration ), 2), 0) acu
from t_live t
         left join (select live_id, sum(watching_duration) duration_sum from t_look_log group by live_id) t1
                   on t.live_id = t1.live_id

需求2

select t.live_id,
      concat ( round(coalesce(t1.duration_sum, 0) / sum(coalesce(t1.duration_sum, 0) ) over ()*100,2),'%' ) duration_rate
from t_live t
         left join (select live_id, sum(watching_duration) duration_sum from t_look_log group by live_id) t1
                   on t.live_id = t1.live_id;

标签:直播间,sum,t1,人气值,live,SQL,duration,id,刷题
From: https://www.cnblogs.com/wdh01/p/17259356.html

相关文章

  • MYSQL ERROR1045 报错的解决办法
    问题原因是密码错误导致的但是我输入的密码是安装MYSQL的时候设定的密码,应该是正确的。其实并不是,因为mysql会随机生成一个乱码作为你的密码。你需要改掉(或者记下)这个密码。解决方法:1.在my.ini中输入以下内容3.保存之后在命令行输入netstartmysql启动服务4.免密码登陆my......
  • MySQL(十一)索引的分类和创建原则
    索引的创建与设计原则1索引的声明与使用1.1索引的分类​ MySQL索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引按照逻辑结构划分,主要有四种:普通索引、唯一性索引、主键索引和全文索引按照物理实现方式划分,主要有两种:聚簇索引和非聚簇索引按照作......
  • mysql实现nextVal功能
    mysql实现nextVal功能首先创建表:CREATETABLE`sys_sequence`(`NAME`varchar(50)NOTNULL,`CURRENT_VALUE`int(11)NOTNULLDEFAULT'0',`INCREMENT`int(11)NOTNULLDEFAULT'1',PRIMARYKEY(`NAME`))插入记录INSERTINTOSYS_SEQUEN......
  • CentOS下安装MySQL8
    CentOS下安装MySQL81下载mysql包选择最新版本的mysql8的压缩包进行下载:https://dev.mysql.com/downloads/mysql/##进入应用安装目录cd/usr/localwgethttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz2解压缩和重命名#解......
  • mysql 主从配置 linux环境
    参考:https://blog.csdn.net/D1179869625/article/details/120773725 [root@localhost~]#vi/etc/my.cnf[mysqld]bind-address=0.0.0.0port=3306user=mysqlbasedir=/usr/local/mysqldatadir=/data/mysqlsocket=/tmp/mysql.socklog-error=/data/mysql/mysql.err......
  • Springboot+Mysql 图书管理系统【源码+sql】
    java项目学生图书管理系统(源码+数据库文件)技术框架:java+springboot+mysql后端框架:SpringBoot、SpringMVC、MyBatisPlus前端界面:Thymeleaf、BootStrap、jQuery系统共分为三种用户系统主要功能:系统设计三个角色,学生端,管理员端,系统管理员端1.普通用户书籍查询、书籍借阅......
  • mysql-联合字段
    CONCAT联合起来字段+字段连接SELECT *, CONCAT(MENU_NAME,":",PATH)FROM `t_menu`WHERE PARENT_IDIN(1,2,3)GROUP_CONCAT联合起来字段内容连接SELECT GROUP_CONCAT(MENU_NAME,'66'), GROUP_CONCAT('66',PATH) FROM `t_menu`WHER......
  • 1130 -Host 'ip' is not allowed to connect to this MySQL server
      由于mysql默认不允许其他IP地址(非虚拟机)访问可以将访问的用户(如root)的host由localhost(本机)改成%(任意,也可指定ip)最后flushprivileges刷新权限 [root@hadoop4~]#mysql-uroot-pmysql>usemysql;mysql>selecthost,userfromuser;+-----------+------+|host......
  • jsp+servlet+mysql实现的停车场管理系统(分为普通用户和管理员,实现注册登录、留言管理
    @目录jsp+servlet+mysql实现的停车场管理系统实现功能截图系统功能使用技术完整源码jsp+servlet+mysql实现的停车场管理系统本系统是一个servlet原生框架实现的停车场管理系统,总共分为两个角色,普通用户和管理员,实现了用户管理、停车信息管理、IC卡管理、临时停车管理、出入场管......
  • mysql linux 主从配置
    mysql安装https://www.cnblogs.com/kire-cat/p/16361559.html 主从配置https://blog.csdn.net/D1179869625/article/details/120773725......