题解 | #牛客直播各科目出勤率#

牛客直播各科目出勤率

http://www.nowcoder.com/practice/0cab547df4f0430b93042128f445d899

我无了

明明很简单的问题

我却一直报错。

我的问题主要在于联结的时候出现了问题。 我一开始是这样联结的

FROM attend_tb a
left join behavior_tb b
on a.user_id=b.user_id and a.course_id=b.course_id
left join course_tb c
on a.course_id=c.course_id

把主表搞错了。

实际上应该把behavior_tb作为主表联结另外两个表。

如下:

FROM behavior_tb b
left join attend_tb a
on a.user_id=b.user_id and a.course_id=b.course_id
left join course_tb c
on b.course_id=c.course_id

最后完整代码如下:

SELECT course_id,course_name
        ,round(count(distinct CASE WHEN diff>=10 THEN a.user_id end)/count(distinct case when if_sign=1 then a.user_id end)*100,2) attend_rate
        -- ,count(distinct CASE WHEN diff>=10 THEN user_id else null end)
        -- ,count(distinct case when if_sign=1 then user_id else null end)
FROM(
SELECT b.user_id,b.if_sign,b.course_id,c.course_name,TIMESTAMPDIFF(minute,a.in_datetime,a.out_datetime) diff
FROM behavior_tb b
left join attend_tb a
on a.user_id=b.user_id and a.course_id=b.course_id
left join course_tb c
on b.course_id=c.course_id

)a
GROUP BY course_id,course_name
ORDER BY course_id

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务