首页 > 其他分享 >1107. 每日新用户统计

1107. 每日新用户统计

时间:2024-10-21 20:49:07浏览次数:11  
标签:01 每日 用户 1107 2019 user activity date Traffic

力扣题目跳转(1107. 每日新用户统计 - 力扣(LeetCode)

Traffic 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| activity      | enum    |
| activity_date | date    |
+---------------+---------+
该表可能有重复的行。
activity 列是 ENUM 类型,可能取 ('login', 'logout', 'jobs', 'groups', 'homepage') 几个值之一。

 题目要求:

编写解决方案,找出从今天起最多 90 天内,每个日期该日期首次登录的用户数。假设今天是 2019-06-30 

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Traffic 表:
+---------+----------+---------------+
| user_id | activity | activity_date |
+---------+----------+---------------+
| 1       | login    | 2019-05-01    |
| 1       | homepage | 2019-05-01    |
| 1       | logout   | 2019-05-01    |
| 2       | login    | 2019-06-21    |
| 2       | logout   | 2019-06-21    |
| 3       | login    | 2019-01-01    |
| 3       | jobs     | 2019-01-01    |
| 3       | logout   | 2019-01-01    |
| 4       | login    | 2019-06-21    |
| 4       | groups   | 2019-06-21    |
| 4       | logout   | 2019-06-21    |
| 5       | login    | 2019-03-01    |
| 5       | logout   | 2019-03-01    |
| 5       | login    | 2019-06-21    |
| 5       | logout   | 2019-06-21    |
+---------+----------+---------------+
输出:
+------------+-------------+
| login_date | user_count  |
+------------+-------------+
| 2019-05-01 | 1           |
| 2019-06-21 | 2           |
+------------+-------------+
解释:
请注意,我们只关心用户数非零的日期.
ID 为 5 的用户第一次登陆于 2019-03-01,因此他不算在 2019-06-21 的的统计内。

case 1 的建表语句。

Create table If Not Exists Traffic (user_id int, activity ENUM('login', 'logout', 'jobs', 'groups', 'homepage'), activity_date date)

Truncate table Traffic

insert into Traffic (user_id, activity, activity_date) values ('1', 'login', '2019-05-01')

insert into Traffic (user_id, activity, activity_date) values ('1', 'homepage', '2019-05-01')

insert into Traffic (user_id, activity, activity_date) values ('1', 'logout', '2019-05-01')

insert into Traffic (user_id, activity, activity_date) values ('2', 'login', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('2', 'logout', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('3', 'login', '2019-01-01')

insert into Traffic (user_id, activity, activity_date) values ('3', 'jobs', '2019-01-01')

insert into Traffic (user_id, activity, activity_date) values ('3', 'logout', '2019-01-01')

insert into Traffic (user_id, activity, activity_date) values ('4', 'login', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('4', 'groups', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('4', 'logout', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('5', 'login', '2019-03-01')

insert into Traffic (user_id, activity, activity_date) values ('5', 'logout', '2019-03-01')

insert into Traffic (user_id, activity, activity_date) values ('5', 'login', '2019-06-21')

insert into Traffic (user_id, activity, activity_date) values ('5', 'logout', '2019-06-21')

一     我们增加一列按照 user_id 分组,按照 activity_date 排序的排名,来判断该用户第一次注册的日期是哪天,并删选出登录的数据。

select
    *,
    row_number() over (partition by user_id order by activity_date) as rn
from Traffic
where activity = 'login';

输出如下

二    很明显 rn = 1 的时候是注册日期 ,那我们提出 rn = 1的数据,并判断是否在归档时间呢,按照 activity_date进行分组并计算每组内的个数即可。

with tmp as
(select
    *,
    row_number() over (partition by user_id order by activity_date) as rn
from Traffic
where activity = 'login')
select activity_date as login_date,
       count(*) as user_count
from tmp
where datediff('2019-06-30',activity_date) <= 90 and rn = 1
group by activity_date;

输出如下

以上就是全部答案,如果对你有帮助请点个赞,谢谢。

来源:力扣(leecode

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 转载请注明出处:

1107. 每日新用户统计-CSDN博客文章浏览阅读2次。activity 列是 ENUM 类型,可能取 ('login', 'logout', 'jobs', 'groups', 'homepage') 几个值之一。ID 为 5 的用户第一次登陆于 2019-03-01,因此他不算在 2019-06-21 的的统计内。编写解决方案,找出从今天起最多 90 天内,每个日期该日期首次登录的用户数。我会尽快把力扣上的所有数据库题目发出来。商业转载请联系官方授权,非商业转载请注明出处。该表可能有重复的行。https://blog.csdn.net/CYJ1844/article/details/143084468

我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。

标签:01,每日,用户,1107,2019,user,activity,date,Traffic
From: https://blog.csdn.net/CYJ1844/article/details/143084468

相关文章

  • 10.21日每日收获
    1、扇区擦除时按首地址擦除,若设定地址不是首地址也从首地址开始擦除,每512个字节为一组,如00H-200H为一组,200H-400H为一组,擦除数据时按组擦除,若果设置擦除开始地址为100h,则仍然会从00H-200H擦除,而不是100H-300H2、有些芯片的FLASHROM结构是类RAM结构,也就是无需擦除可以直接覆盖......
  • 每日一道算法题(栈)
     What'spastisprologue. 凡是过去,皆为序章。题目 分析 1.我们可以用栈的结构来解决这道题。2.我们使用while循环,每次读取字符串中一个元素进行操作,直到最后读取到'\0'为止。3.如果遇见'(','[','{' 这三种左括号,则把该左括号入栈;如果遇见')',']','}......
  • 12、用户和权限管理
    用户组与用户管理用户组(Group)用户组用于方便权限分配。常见部门组:北京核心研究院-教研中心-北京教学部研究院-研发中心-长沙研发研究院-售后VIP服务中心研究院-教研中心-长沙教学部组ID(GID)分类:root用户组:GID=0程序用户组(系统用户组):1-999(CentOS7)普通用户组:1000-......
  • podman 无根用户分配系统CPU、内存等系统资源,提示cgroup相关权限不足
    问题:在使用Podman以无根用户(rootless)模式创建容器时,如果遇到分配系统CPU等资源时提示cgroup权限不足,这是因为无根用户没有直接访问cgroup相关资源的权限。以下是一些解决方法(目前采用的办法3临时解决,,主要是更改系统目录权限sudochown-R$USER:$USER/sys/fs/cgro......
  • 普通用户如何管理(启/停)Windows服务(一)
    介绍在Windows上默认普通用户(非管理员)无法管理Windows服务。例如服务的启动、停止和重启,更改服务的设置和权限,但是在某些特定情况下却又需要普通用户可以管理指定的Windows服务。本系列介绍了处理该情况的几种方法,各位可以根据自己的实际情况进行合理的选择。Windows命令使......
  • 华为鸿蒙 UIAbility 组件:构建用户界面的舞台
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。华为鸿蒙系统的阶段模型为开发者提供了......
  • 【AIGC】第一性原理下的ChatGPT提示词Prompt设计:系统信息与用户信息的深度融合
    博客主页:[小ᶻZ࿆]本文专栏:AIGC|ChatGPT文章目录......
  • 大模型如何提升电商平台的用户粘性与活跃度
    引言在互联网飞速发展的今天,电子商务平台已经成为人们日常生活的重要组成部分。然而,如何在激烈的竞争中脱颖而出,提升平台的用户粘性与活跃度,成为各大电商平台亟待解决的关键问题。用户粘性与活跃度是电商平台生存发展的基石,直接关系到平台的盈利能力和市场竞争力。用户粘性......
  • sicp每日一题[2.51]
    Exercise2.51Definethebelowoperationforpainters.belowtakestwopaintersasarguments.Theresultingpainter,givenaframe,drawswiththefirstpainterinthebottomoftheframeandwiththesecondpainterinthetop.Definebelowintwodiffere......
  • java项目篇-用户脱敏展示
    用户敏感信息脱敏展示定义手机号和证件号的Jackson自定义序列化器,并在对应需要脱敏的敏感字段上指定自定义序列化器。在进行指定的需要脱敏的字段(身份证号,手机号,银行卡号等)序列化的时候,该字段自动变成脱敏json对象。1)身份证号序列化器importcn.hutool.core.util.Des......