首页 > 其他分享 >活跃用户

活跃用户

时间:2024-08-23 13:16:11浏览次数:7  
标签:created 09 用户 活跃 2021 id Smart user

 

Users 表:

+-------------+----------+ 
| 字段名       | 类型      | 
+-------------+----------+ 
| user_id     | int      | 
| item        | varchar  |
| created_at  | datetime |
| amount      | int      |
+-------------+----------+
在这个表可能包含重复的记录。
每一行包括 user_id、购买的商品、购买日期和购买金额。

编写一个解决方案,找出活跃用户。活跃用户是指在其任何一次购买之后的 七天内 进行了第二次购买的用户。

例如,如果结束日期是 2023年5月31日,那么在 2023年5月31日 和 2023年6月7日之间(包括这两天)的任何日期都被视为"在7天内"。

返回 任意顺序 的 user_id 列表,表示活跃用户列表。

结果的格式如下示例:

 

示例 1:

输入:
Users 表:
+---------+-------------------+------------+--------+ 
| user_id | item              | created_at | amount |  
+---------+-------------------+------------+--------+
| 5       | Smart Crock Pot   | 2021-09-18 | 698882 |
| 6       | Smart Lock        | 2021-09-14 | 11487  |
| 6       | Smart Thermostat  | 2021-09-10 | 674762 |
| 8       | Smart Light Strip | 2021-09-29 | 630773 |
| 4       | Smart Cat Feeder  | 2021-09-02 | 693545 |
| 4       | Smart Bed         | 2021-09-13 | 170249 |
+---------+-------------------+------------+--------+ 
输出:
+---------+
| user_id | 
+---------+
| 6       | 
+---------+
解释:
– user_id 为 5 的用户只有一笔交易,因此他不是活跃用户。
– user_id 为 6 的用户有两笔交易,第一笔交易是在2021年9月10日,第二笔交易是在2021年9月14日。第一笔和第二笔交易之间的时间间隔小于等于7天。因此,他是一个活跃用户。
– user_id 为 8 的用户只有一笔交易,因此他不是活跃用户。
– user_id 为 4 的用户有两笔交易,第一笔交易是在2021年9月2日,第二笔交易是在2021年9月13日。第一笔和第二笔交易之间的时间间隔大于7天。因此,他不是活跃用户。
 ============解答==========如下是三种答案===
# Write your MySQL query statement below
with c as(
select user_id ,created_at ,lag(created_at) OVER(PARTITION BY user_id ORDER BY created_at ) AS b_date from Users 
),
c1 as(
    select user_id, datediff(created_at,b_date)  as das from c where b_date is not null
)
select distinct user_id  from c1 where das <=7

作者:张晓
链接:https://leetcode.cn/problems/find-active-users/solutions/2274955/lag-kai-chuang-by-zhang-xiao-esylmvqida-nq30/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


select 
distinct
user_id
from(
select
user_id,
created_at,
lead(created_at,1)over(partition by user_id order by created_at) as pn
from Users
) as t 
where
datediff(pn,created_at)<=7

作者:001
链接:https://leetcode.cn/problems/find-active-users/solutions/1/xiao-bai-jian-dan-zhi-bai-xie-fa-hen-ron-odpg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


# Write your MySQL query statement below
#手动造一个唯一标识
with ctr1 as (
    select 
        *,
        row_number() over() as id
    from users
)


select 
    distinct u1.user_id
from ctr1 u1 
join ctr1 u2 
on u1.user_id = u2.user_id 
and ( u1.created_at between u2.created_at and DATE_ADD(u2.created_at, INTERVAL 7 DAY))
and u1.id <> u2.id


作者:Priceless TaussignhK
链接:https://leetcode.cn/problems/find-active-users/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分析最后一种答案.
    select 
        *,
        row_number() over() as id
    from users

    
Case 1
输入
Users =
| user_id | item              | created_at | amount |
| ------- | ----------------- | ---------- | ------ |
| 5       | Smart Crock Pot   | 2021-09-18 | 698882 |
| 6       | Smart Lock        | 2021-09-14 | 11487  |
| 6       | Smart Thermostat  | 2021-09-10 | 674762 |
| 8       | Smart Light Strip | 2021-09-29 | 630773 |
| 4       | Smart Cat Feeder  | 2021-09-02 | 693545 |
| 4       | Smart Bed         | 2021-09-13 | 170249 |
输出
| user_id | item              | created_at | amount | id |
| ------- | ----------------- | ---------- | ------ | -- |
| 5       | Smart Crock Pot   | 2021-09-18 | 698882 | 1  |
| 6       | Smart Lock        | 2021-09-14 | 11487  | 2  |
| 6       | Smart Thermostat  | 2021-09-10 | 674762 | 3  |
| 8       | Smart Light Strip | 2021-09-29 | 630773 | 4  |
| 4       | Smart Cat Feeder  | 2021-09-02 | 693545 | 5  |
| 4       | Smart Bed         | 2021-09-13 | 170249 | 6  |

on u1.user_id = u2.user_id 
and ( u1.created_at between u2.created_at and DATE_ADD(u2.created_at, INTERVAL 7 DAY))
and u1.id <> u2.id



  | user_id | item              | created_at | amount | id |     | user_id | item              | created_at | amount | id |
  | ------- | ----------------- | ---------- | ------ | -- |     | ------- | ----------------- | ---------- | ------ | -- |
  | 5       | Smart Crock Pot   | 2021-09-18 | 698882 | 1  |     | 5       | Smart Crock Pot   | 2021-09-18 | 698882 | 1  |
  | 6       | Smart Lock        | 2021-09-14 | 11487  | 2  |     | 6       | Smart Lock        | 2021-09-14 | 11487  | 2  |
  | 6       | Smart Thermostat  | 2021-09-10 | 674762 | 3  |     | 6       | Smart Thermostat  | 2021-09-10 | 674762 | 3  |
  | 8       | Smart Light Strip | 2021-09-29 | 630773 | 4  |     | 8       | Smart Light Strip | 2021-09-29 | 630773 | 4  |
  | 4       | Smart Cat Feeder  | 2021-09-02 | 693545 | 5  |     | 4       | Smart Cat Feeder  | 2021-09-02 | 693545 | 5  |
  | 4       | Smart Bed         | 2021-09-13 | 170249 | 6  |     | 4       | Smart Bed         | 2021-09-13 | 170249 | 6  |
  

 

     

标签:created,09,用户,活跃,2021,id,Smart,user
From: https://www.cnblogs.com/mengbin0546/p/18375509

相关文章

  • Jenkins: 重置管理员密码,如何修改用户的登录密码
    修改用户密码1.打开前台首页,依次进入系统管理 -> 安全 -> 全局安全配置,在“认证(Authentication)”->安全域->选择“Jenkins专有用户数据库”,取消勾选“允许用户注册”,在授权策略->选择“登录用户可以做任何事”,取消“匿名用户具有可读权限”,完成后点“保存”如下图 2.......
  • linux: 用户命名规范
    一,用户的级别:按id0:超级用户root1-999:系统用户1000-65535:用户级用户二,命名规范:1,linux用户名建议符合[a-z_][a-z0-9_-]*[$]正则表达式 即:用户名由字母、数字、下划线(_)组成2,linux用户名长度不超过32位3,用下划线来连接单词可以使用户名更容易记忆和理解4,用户名不应包......
  • 华为交换机添加ssh用户连接
    1.配置交换机的基本信息:        确保交换机的IP地址已配置,并且SSH功能已启用。2.创建本地用户:你可以通过创建本地用户并设置密码来允许SSH访问。local-user[username]passwordirreversible-cipher[password]local-user[username]privilegelevel[lev......
  • 基于 Python 3.12.4 和 PySide 6 的 假用户操作系统【0-0】虚拟终端框架
    基本目标实现工作目录的切换;实现非退出命令下的无限循环;到目前为止还不能实现的功能动态导入py文件中的模块缺少组件定义虚拟进程类command.pyfromctypesimportwindllfromPySide6.QtWidgetsimportQWidgetfromsysimportexitassys_exitfromosimportpath......
  • 【精选】基于大数据的___银行信用卡用户的数仓系统的设计与实现(全网独一无二,最新定制)
    目录: 关键技术介绍 PYTHON语言简介大数据介绍 MySql数据库DJANGO框架 Hadoop介绍Scrapy介绍B/S架构 系统的设计系统总功能模块设计系统测试系统测试的目的软件测试过程6.3测试用例参考代码:为什么选择我:博主介绍:✌我是阿龙,一名专注于Java技术领域的......
  • 爬虫: AmazonSpider-亚马逊用户画像
    爬虫:AmazonSpider-亚马逊用户画像使用selenium等工具类,在亚马逊平台上爬去商品信息和用户信息,并进行数据分析和分词统计,最后生成用户画像报告。亚马逊平台访问需要代理访问!github仓库:https://github.com/kimbleex/AmazonSpider.gitstar和fork是一个好习惯!......
  • Chainlit接入FastGpt接口快速实现自定义用户聊天界面
    前言由于fastgpt只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPTweb等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办?于是,我使用Chainlit实现了一个无缝快速接入fastgpt实现自......
  • redis实现统计用户连续登陆天数
    在很多app以及游戏当中,经常会统计用户连续登陆天数,使用mysql统计这份频繁的数据有所欠缺以及结算等方面都是很大的负担存在的挑战数据如何尽可能用小的空间存储如何能快速获取指定的数据如果使用文件保存   会有如下问题:文件分割变得十分麻烦数据检索非常不方便......
  • 小程序登录及用户信息、手机号获取
    小程序登录及用户信息、手机号获取 小程序登录流程时序  说明:调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。调用 auth.code2Session 接口,换取 用户唯一标识OpenID 和 会话密钥session_key。之后开发者服务器可以根据用户标识来生成自......
  • Python 开发中,使用bcrypt 或 Passlib 对系统用户密码进行哈希和验证处理
    在设计一个系统的时候,肯定都有会有用户身份认证的问题,一般对用户校验的时候,都是对用户存在数据库总的密码哈希值进行判断,从而避免密码泄露和反向解密,那么在Python开发中,我们可以引入bcrypt或Passlib对系统用户密码进行哈希和验证处理,以及介绍使用其他类库实现常规加解密处理操......