题解 | #灵魂社交APP6月2日的T+1日留存#
灵魂社交APP6月2日的T+1日留存
http://www.nowcoder.com/practice/4fe8b31084094910b53165be26ba3fe4
重点1:date_sub函数的使用,日期做差 重点2:distinct关键字去重 重点3:窗口函数avg计算平均值 重点4:if句法如果判断条件为真/假则统计
SELECT
-- 3.计算次日留存用户数的平均数保留两位有效数字
ROUND(AVG(IF(b.user_id IS NOT NULL, 1, 0)), 2) AS avg_ret
FROM
(
SELECT
-- 1.计算当日去重用户数
DISTINCT user_id,
login_date
FROM
logintb
WHERE
login_date = '2021-6-2'
)a
LEFT JOIN
(
-- 2.计算次日去重用户数
SELECT
DISTINCT user_id,
DATE_SUB(login_date, INTERVAL 1 day) AS login_date
FROM
logintb
)b
ON a.user_id = b.user_id AND a.login_date=b.login_date;