主要信息

  • 已知课程表course_tb(其中course_id代表课程编号,course_name表示课程名称);用户行为表behavior_tb如下(if_vw表示是否浏览、if_sign表示是否报名、course_id代表课程编号)
  • 请你统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数)。 注:按照course_id升序排序。 ​

问题拆解

总体思路

  • 转化率=报名人数/浏览人数报名人数 = 求和报名的人数(if_sign), 浏览人数 = 求和浏览的人数(if_vw)
  • 计算结果返回course_name,和科目转化率,按照course_id排序 ​

具体实现

  • sum(behavior_tb.if_sign) / sum(behavior_tb.if_vw) * 100,保留两位有效数字并展示百分比,round(x,2)
  • 由于course_name在表course_tb中,返回要求course_name,根据course_id连接表behavior_tb和course_tb取出course_name并最后根据course_id排序

考点:join、round、sum、group by、业务理解

SELECT course_name
	, round(sum(if_sign) / sum(if_vw) * 100, 2) AS "sign_rate(%)"
FROM behavior_tb b
	LEFT JOIN course_tb c USING (course_id)
GROUP BY course_name
ORDER BY course_id;