SQL练习:SQL68_较难
题目:
题解:
# 思路:
# 1.找新登录次日又登录的用户;
# 2.找用户登录记录的用户总数;
# 3.结果=round(步骤1/步骤2)
SELECT ROUND(COUNT(DISTINCT user_id) * 1.0 / ( # COUNT新登录后,次日登录的用户数
SELECT COUNT(DISTINCT user_id) # 2.COUNT用户总数,DISTINCT去除重复用户
FROM login) ,3) # 保存小数点后面3位
FROM login
WHERE (user_id,date) IN ( # 1.WHERE选出新登录用户的次日登录的记录
SELECT user_id,DATE_ADD(MIN(date),INTERVAL 1 DAY) # MIN找新登录,DATE_ADD找次日登录
FROM login
GROUP BY user_id); # 根据用户分组
不懂请看【菜鸟教程】:date_add()函数
- 个人整理的笔记,仅供学习使用,有问题麻烦指正。
- 题目来源于:牛客网