牛客每个人最近的登录日期(三) 连续两天登陆占比

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

http://www.nowcoder.com/questionTerminal/16d41af206cd4066a06a3a0aa585ad3d

1.求出连续两天登陆的用户id,因为使用的join方法,所以如果有连续三天登陆会被记录两次连续两天,使用DISTINCT排除重复的user_id

SELECT
COUNT(DISTINCT l1.user_id)
FROM login l1
INNER JOIN login l2
ON l1.user_id=l2.user_id and DATE_ADD(l1.date,INTERVAL 1 DAY)=l2.date

2.直到所有登陆过的user_id,相除就行

SELECT
COUNT(DISTINCT l1.user_id)
FROM login l1
INNER JOIN login l2
ON l1.user_id=l2.user_id and DATE_ADD(l1.date,INTERVAL 1 DAY)=l2.date
)
/
(
SELECT
COUNT(DISTINCT user_id)
FROM login
)

3.使用cast as decimal()控制小数点
SELECT
CAST( ((
SELECT
COUNT(DISTINCT l1.user_id)
FROM login l1
INNER JOIN login l2
ON l1.user_id=l2.user_id and DATE_ADD(l1.date,INTERVAL 1 DAY)=l2.date
)
/
(
SELECT
COUNT(DISTINCT user_id)
FROM login
))AS decimal(10,3)) 'p'

mysql通过,sqlite直接报请检查是否存在语法错误或者数组越界非法访问等情况

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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