题解 | #牛客每个人最近的登录日期(三)#

牛客每个人最近的登录日期(三)

https://www.nowcoder.com/practice/16d41af206cd4066a06a3a0aa585ad3d

#注释:client_id无用

select

/*此句报语法错误count(case when count(date)>=2 then 1 end)/count(distinct user_id)
1.case when count(date)>=2 then 1 end -------没问题
2.count(distinct user_id) -------没问题
3.count(case when count(date)>=2 then 1 end)-------报错
程序异常退出, 请检查代码"是否有数组越界等异常"或者"是否有语法错误"
SQL_ERROR_INFO: 'Invalid use of group function'
???count里面不能再用count吗?
*/

round(Count(user_id)/Count(Distinct user_id)-1,3)
#注释:Count(Distinct user_id 为第一天登录人数,记作A,Count(user_id)为第一天登陆人数A和第二天留存人数B总和,记作A+B,所要求的留存率P=B/A,所以[](A+B)/A]-1=B/A=P
from login
where
 (date, user_id) in
(select
date_add(min(date),interval 1 day),
user_id
from login
group by user_id)
#注释:筛选出隔日还有登录(错过:不应该用四则运算,日期格式有独有的加减格式)的ID,但是会漏选第一天有登录,第二天没登录的用户
or 
 (date, user_id) in
(select
min(date),
user_id
from login
group by user_id)

#注释:筛选出第一天有登录的用户


多字段多条件筛选

未解决问题:count(case when count(date)>=2 then 1 end) 为何报错 Invalid use of group function,难道count里面一定不能嵌套count吗?

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务