首页 > 试题广场 >

牛客直播转换率

[编程题]牛客直播转换率
  • 热度指数:23840 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛客某页面推出了数据分析系列直播课程介绍。用户可以选择报名任意一场或多场直播课。
已知课程表course_tb如下(其中course_id代表课程编号,course_name表示课程名称,course_datetime代表上课时间):
course_id course_name course_datetime
1 Python 2021-12-1 19:00-21:00
2 SQL 2021-12-2 19:00-21:00
3 R 2021-12-3 19:00-21:00
用户行为表behavior_tb如下(其中user_id表示用户编号、if_vw表示是否浏览、if_fav表示是否收藏、if_sign表示是否报名、course_id代表课程编号):
user_id if_vw if_fav if_sign course_id
100 1 1 1 1
100 1 1 1 2
100 1 1 1 3
101 1 1 1 1
101 1 1 1 2
101 1 0 0 3
102 1 1 1 1
102 1 1 1 2
102 1 1 1 3
103 1 1 0 1
103 1 0 0 2
103 1 0 0 3
104 1 1 1 1
104 1 1 1 2
104 1 1 0 3
105 1 0 0 1
106 1 0 0 1
107 1 0 0 1
107 1 1 1 2
108 1 1 1 3
请你统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数)。
注:按照course_id升序排序。
course_id course_name sign_rate(%)
1 Python 50.00
2
SQL 83.33
3 R 50.00
示例1

输入

drop table if exists course_tb;
CREATE TABLE course_tb(
course_id int(10) NOT NULL, 
course_name char(10) NOT NULL,
course_datetime char(30) NOT NULL);

INSERT INTO course_tb VALUES(1, 'Python', '2021-12-1 19:00-21:00');
INSERT INTO course_tb VALUES(2, 'SQL', '2021-12-2 19:00-21:00');
INSERT INTO course_tb VALUES(3, 'R', '2021-12-3 19:00-21:00');

drop table if exists behavior_tb;
CREATE TABLE behavior_tb(
user_id int(10) NOT NULL, 
if_vw int(10) NOT NULL,
if_fav int(10) NOT NULL,
if_sign int(10) NOT NULL,
course_id int(10) NOT NULL);

INSERT INTO behavior_tb VALUES(100, 1, 1, 1, 1);
INSERT INTO behavior_tb VALUES(100, 1, 1, 1, 2);
INSERT INTO behavior_tb VALUES(100, 1, 1, 1, 3);
INSERT INTO behavior_tb VALUES(101, 1, 1, 1, 1);
INSERT INTO behavior_tb VALUES(101, 1, 1, 1, 2);
INSERT INTO behavior_tb VALUES(101, 1, 0, 0, 3);
INSERT INTO behavior_tb VALUES(102, 1, 1, 1, 1);
INSERT INTO behavior_tb VALUES(102, 1, 1, 1, 2);
INSERT INTO behavior_tb VALUES(102, 1, 1, 1, 3);
INSERT INTO behavior_tb VALUES(103, 1, 1, 0, 1);
INSERT INTO behavior_tb VALUES(103, 1, 0, 0, 2);
INSERT INTO behavior_tb VALUES(103, 1, 0, 0, 3);
INSERT INTO behavior_tb VALUES(104, 1, 1, 1, 1);
INSERT INTO behavior_tb VALUES(104, 1, 1, 1, 2);
INSERT INTO behavior_tb VALUES(104, 1, 1, 0, 3);
INSERT INTO behavior_tb VALUES(105, 1, 0, 0, 1);
INSERT INTO behavior_tb VALUES(106, 1, 0, 0, 1);
INSERT INTO behavior_tb VALUES(107, 1, 0, 0, 1);
INSERT INTO behavior_tb VALUES(107, 1, 1, 1, 2);
INSERT INTO behavior_tb VALUES(108, 1, 1, 1, 3);

输出

1|Python|50.00
2|SQL|83.33
3|R|50.00
头像 盐咸咸
发表于 2022-04-11 17:44:00
题目:请你统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数),按照course_id升序排序 转化率=SUM(if_sign)/SUM(if_vw) SELECT course_id,course_name,ROUND(SUM(i 展开全文
头像 牛客666375956号
发表于 2022-02-17 16:13:49
记得列名带%的要加引号 SELECT course_id,course_name,round(sum(if_sign)/ sum(if_vw)*100,2) as "sign_rate(%)" from course_tb inner join behavior_tb using(course_id 展开全文
头像 通辽可汗克鸽勃
发表于 2021-12-22 11:15:28
很简单的代码,分组求和搭配if函数即可 链接时可以用using 字段,只要两个表格某属性名一样就可以使用 select cou.course_id,course_name, round(100*sum(if(if_sign=1,1,0))/sum(if(if_vw=1,1,0)),2) 展开全文
头像 酸菜鱼土豆大侠
发表于 2022-10-30 16:32:52
【场景】:分组求和再相除、转化率:累计报名人数/累计浏览人数、only_full_group_by 【分类】:分组查询、group by course_id,course_name、any_value 分析思路 难点: 1.如何使用分组后保留course_name这一列? 一、使用group by 展开全文
头像 刷题刷啊刷啊刷
发表于 2023-01-18 16:52:01
注意group by 要按course_id和course_name;group by 只用course_id的话,使用any_value。 select course_id, course_name, round(sum(if_sign)/sum(if_vw)*100,2) as rate fr 展开全文
头像 GuaMiao
发表于 2023-08-01 15:47:58
select course_id, course_name, round(sum(if_sign)/sum(if_vw)*100, 2) as 'sign_rate(%)' from ( select a.course_id, b.course_name, a.if_vw, a.if_sig 展开全文
头像 JanisZhan
发表于 2022-07-01 11:41:56
select b.course_id,c.course_name,round(sum(b.if_sign)*100/sum(b.if_vw),2) as 'sign_rate(%)' from course_tb c right outer join behavior_tb b on 展开全文
头像 不是江小白
发表于 2021-12-07 17:39:58
解题思路 “统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数)。 注:按照course_id升序排序。” 题目的重点就在这句话,下面来拆解这句话这里的考察知识点。 “每个科目”,表示会用到GROUP BY 函数来分组,分组的字段是course_nam 展开全文
头像 牛客796304033号
发表于 2022-03-02 09:17:06
此题共包含两张表: 表1:course_tb 表2:behavior_tb 要解决的问题: 请你统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数)。 注:按照course_id升序排序。 解题思路: 找到每个课程编码的的浏览人数、报名人数 对照课程编码找 展开全文
头像 幻想自己成为数据工程师
发表于 2024-02-06 10:42:15
# 求每个课的转换率 # 转换率 = 报名人数/浏览人数 SELECT course_id, course_name, ROUND(SUM(if_sign) / SUM(if_vw) * 100, 2) 'sign_rate(%)' FROM course_tb JOIN behavior_t 展开全文
  • 二维码

    扫描二维码,关注牛客网

  • 二维码

    下载牛客APP,随时随地刷题