【场景】:分组求和再相除、转化率:累计报名人数/累计浏览人数、only_full_group_by
【分类】:分组查询、group by course_id,course_name、any_value
分析思路
难点:
1.如何使用分组后保留course_name这一列?
一、使用group by course_id,course_name
二、使用any_value
(1)统计牛客直播转换率
注:因为是0、1表示的数,所以使用sum比count方便
- [使用]:sum()
分组时为了把course_name保留,对其也实行分组;course_id和course_name是一一对应关系所以不影响结果。
- [使用]:group by course_id,course_name
最终结果
select 查询结果 [课程号;课程名称;转化率]
from 从哪张表中查询数据[多表]
group by 分组条件 [课程号;课程名称]
order by 对查询结果排序 [课程号];
求解代码
方法一:
使用 group by course_id,course_name
select
course_id,
course_name,
round(sum(if_sign)/sum(if_vw)*100,2) as sign_rate
from course_tb
left join behavior_tb using(course_id)
group by course_id,course_name
order by course_id
方法二:
使用 any_value
select
course_id,
any_value(course_name),
round(sum(if_sign)/sum(if_vw)*100,2) as sign_rate
from course_tb
left join behavior_tb using(course_id)
group by course_id
order by course_id