【场景】:分组求和再相除、转化率:累计报名人数/累计浏览人数、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