统计牛客每个日期登录新用户个数

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

http://www.nowcoder.com/questionTerminal/e524dc7450234395aa21c75303a42b0a

两种解法:

  • 使用count计算每日新用户个数
  • 使用case和窗口函数计算每个用户的登陆次数序号,选取第一次登陆的计数

使用count计算每日新用户个数时,要注意不能遗漏新用户个数为0的日期,可以使用union补充上

SELECT l.mdate AS date,COUNT(user_id) AS new
FROM (
    SELECT user_id,MIN(date) AS mdate
    FROM login
    GROUP BY user_id)AS l
GROUP BY l.mdate 
UNION 
SELECT date,0 AS new
FROM login
WHERE date NOT IN (
    SELECT MIN(date)
    FROM login
    GROUP BY user_id)
ORDER BY date

使用case和窗口函数计算

SELECT date,
SUM(CASE WHEN r=1 THEN 1 ELSE 0 END )AS new
FROM (
    SELECT user_id,date,
    DENSE_RANK() OVER (PARTITION BY user_id ORDER BY DATE) AS r
    FROM login) AS l
GROUP BY date
ORDER BY date
全部评论
不能用DENSE_RANK吧,如果一个用户在第一天登录多次,那DENSE_RANK那里就是1,1,1.你在后面SUM的时候不就一天登录3次的一个新用户却相加了3次吗。 个人以为应该用ROW_NUMBER。
2 回复 分享
发布于 2021-11-13 20:11

相关推荐

多多啊 多多啊 上来四道算法题算法题直播排序,整体比较简单把对象写出来,然后比较规则写明白就OK了。唯一一道A100%的电车充电如何最省钱,到目的地如何充电的钱最少,路上有充电站,每个电站价格不一样。用了DP来做,但感觉是贪心的样子,最后没招了,把不能到的情况给干了出来,过了8%日志分析纠错,滑动窗口,但我最后结果永远少一,过了15%没看,力竭了燃尽了多多 以后牛客不用后台找我了,笔试夯爆了
淮竹c:不好意思,打扰大家🙏我是一个拼多多骑手,小电驴的最大电量为C,我的最大电量有1e9这么promax😭😭😭需要从x=0处走到x=L,L足足有1e9那么长处,途中有n个充电站,🙏🙏每个充电站的距离和电价分别为di和pi,初始电量是满的😭😭😭请告诉我到达终点最少要花多少钱😭😭😭求求大家把这些钱转给我
查看2道真题和解析
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

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