SQL:根据用户注册表和事件日志计算第一天保留率

2024-01-10

我需要按用户注册日期计算第一天的留存率。第 1 天留存率定义为注册日期 1 天后返回的用户数量除以注册日期当天注册的用户数量。

这是用户表

CREATE TABLE registration (
  user_id SERIAL PRIMARY KEY,
  user_name VARCHAR(255) NOT NULL,
  registrationDate TIMESTAMP NOT NULL
);

INSERT INTO registration (user_id, user_name, registrationDate)
VALUES
  (0, 'John', '2018-01-01 00:01:00'),
  (1, 'David', '2018-01-01 00:04:30'),
  (2, 'Cassy', '2018-01-02 10:00:00'),
  (3, 'Winka', '2018-01-02 14:30:00')
;

CREATE TABLE log (
  user_id INTEGER,
  eventDate TIMESTAMP
);

INSERT INTO log (user_id, eventDate)
VALUES
  (0, '2018-01-01 01:00:00'),
  (0, '2018-01-02 04:00:00'),
  (0, '2018-01-04 06:00:00'),
  (1, '2018-01-01 00:30:00'),
  (3, '2018-01-02 14:40:00'),
  (3, '2018-01-04 12:20:00'),
  (3, '2018-01-06 13:30:00'),
  (2, '2018-01-12 10:10:00'),
  (2, '2018-01-13 09:00:00')

我尝试将注册表连接到日志表,这样我就可以比较日期差异。

select registration.user_id, registrationDate, log.eventDate, 
(log.eventDate - registration.registrationDate) as datediff 
from log left join registration ON log.user_id = registration.user_id

我认为我需要以某种方式执行以下任务。

  1. select the users with datediff = 1 and count them.
    • 我添加了一个 where 语句,但收到错误消息“datediff 不存在位置”
where datediff = 1
  1. do the Group By registrationDate.
    • 这也给了我一个错误:“错误:列“registration.user_id”必须出现在 GROUP BY 子句中或在聚合函数中使用”

我是 SQL 新手,在解决问题时学习它。任何帮助/建议将不胜感激

预期结果应返回一个包含两列(注册日期和保留时间)的表,其中包含任何用户注册的每个日期的行。


第 1 天留存率定义为注册日期 1 天后返回的用户数量除以注册日期当天注册的用户数量。

这将定义解释为基于日历日。我将其表达为:

用户注册后第二天回来的比例是多少?

我认为这是最简单的方法:

select count(distinct l.user_id) * 1.0 / count(distinct r.user_id)
from registration r left join
     log l
     on l.user_id = r.user_id and
        l.eventDate::date = r.registrationDate::date + interval '1 day';

The count(distinct)仅当一天内可能发生多个事件时才需要。

是一个数据库小提琴。

我不确定这个定义是否 100% 有用。如果您有其他定义,我建议您询问new问题,具有适当的样本数据和期望的结果.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL:根据用户注册表和事件日志计算第一天保留率 的相关文章

  • t-sql 中的行相乘

    我有下表 ID Number 1 41 5 2 42 5 3 43 5 2 44 5 2 45 5 1 46 5 1 47 5 我需要编写一个查询 该查询将返回不同的 ID 和相应的 Number 列值相乘 对于给定的表结果应该是这样的 I
  • 使用数据库、php、js 确定餐厅现在是否营业(就像 yelp 那样)

    我想知道是否有人知道 yelp 如何确定哪些餐厅 现在营业 我正在使用 html javascript php 开发类似的应用程序 我将在数据库中每天有一栏 以 2243 格式 晚上 10 43 以逗号分隔的时间 例如 如果一家餐厅供应午餐
  • 使用 Microsoft SQL Server 管理复制表

    需要使用复制表Microsoft SQL Management Studio 2008 TABLE 还需要复制所有表行 主键 ID 在 SSMS 中打开一个新的查询窗口 然后执行如下操作 SELECT INTO NewTable FROM
  • 私人消息系统。列出每个对话的最后一条消息

    可以说这是数据库结构 SELECT FROM pms where id to 1 or id from 1 这将返回他已接收或发送的所有消息 那么我如何检索最后一条消息each用户1可能进行的对话 PD 当两个用户之间存在一条或多条消息时
  • 表与视图的性能

    最近开始使用一个数据库 其中的惯例是为每个表创建一个视图 如果您假设表和视图之间存在一对一的映射 我想知道是否有人可以告诉我这样做对性能的影响 顺便说一句 这是在 Oracle 上的 假设问题是关于非物化视图 实际上取决于视图所基于的查询以
  • 空字符串与NULL

    我有一个表 其中一些行有一些空白cells 我尝试使用 IS NULL 函数选择此类行 但查询选择了 0 行 select from zzz fkp registration female where fname is null 0 row
  • 在 Linux 中,Distinct SQL 无法与 UNNEST 一起使用

    当我在窗口系统中运行此查询时 行为正确 UNNEST 但是当我运行这个查询时 Linux 的行为不同 unnest 重复记录列表在不同的行上 SELECT DISTINCT billing billmanagement creation d
  • 如何连接mysql表

    我有一张这样的旧桌子 user gt id name address comments 现在我必须创建一个 别名 表 以允许某些用户出于某种原因拥有别名 我创建了一个新表 user alias 如下所示 user alias gt name
  • 让 django 不插入某些字段

    我有一个针对 postgresql 数据库表的 Django 模型 我希望 Django 在对象创建期间不要插入 field 3 作为 DB 应该填写的时间戳字段 class AbcModel model id models AutoFie
  • 如何在 JSON Postgres 数据类型列中搜索特定字符串?

    我有一个名为params在名为的表中reports其中包含 JSON 我需要找到 JSON 数组中任何位置包含文本 authVar 的行 我不知道文本可能出现的路径或级别 我只想使用标准的 like 运算符搜索 JSON 就像是 SELEC
  • 如何使用带有 where 子句的内连接?

    我在这里发布一些扩展如何连接多个sql查询以获得一张表 https stackoverflow com questions 71098208 how to concatenate more sql queries to get one ta
  • MySQL - 基于日期加入

    是否可以根据同一日期连接两个表 而不考虑时间 就像是 从预约左侧加入销售 约会 日期 销售 日期 唯一的问题是它是一个日期时间字段 所以我想确保它只查看日期并忽略时间 你可以这样做 FROM appointments LEFT JOIN s
  • 如何在 Postgres 中将表从公共模式移动到其他模式

    Postgres 9 1 数据库包含公共模式中的表 yksus1 ykssu9 pgAdmin 显示了这些定义 如下面的代码所示 如何将这些表移至 Firma1 架构 Firma1 模式中的其他表具有对这些表主键的外键引用 对这些表的外键引
  • 树形表的sql查询

    我有一个树形结构的表 id parentId name 1 0 Category1 2 0 Category2 3 1 Category3 4 2 Category4 5 1 Category5 6 2 Category6 7 3 Cate
  • 相当于 pandas 'transform' 的 SQL 是什么?

    假设您有以下 SQL 表 A B C 2 1 4 3 4 5 3 1 1 1 4 0 5 0 1 并且您想要添加 显示一个列 其中包含 A 列对于 B 列的每个不同值的平均值 或任何其他聚合函数 您想要保留所有列 所以结果会是这样的 A B
  • MySQL 中的排名函数

    我需要找出客户的等级 这里我根据我的要求添加相应的 ANSI 标准 SQL 查询 请帮我将其转换为 MySQL SELECT RANK OVER PARTITION BY Gender ORDER BY Age AS Partition b
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • mysql查询获取根父级

    我的表中有以下数据categories id parent id title 1 0 A 2 1 B 3 2 C 4 3 D 5 4 E 现在我想获取类别 id 4 的根类别标题 parent id 0 即标题 A 的类别 id 1 如何在
  • SQL 查询运行时间太长,asp.net 停止响应

    我有一个 SQL 查询 大约需要 10 分钟才能完成 该查询的结果显示在 asp net 网页上 这里的问题是 当我在 SQL Server 上运行查询时 它工作正常 但是当从网页触发查询时 网页上不会显示任何结果 数据库大小约为9 GB
  • 数组 (UUID[ ]) 会破坏 1NF 吗?

    我的问题是包含 UUID 数组的字段是否会破坏范式 http en wikipedia org wiki Database normalization 在包含数组之前位于 NF 中的表中 原表 CREATE TABLE Floor Floo

随机推荐

  • AEM Scheduler 的配置发生变化吗?

    我正在尝试为我的项目需求实现简单的调度程序 我的项目正在使用Adobe AEM 截至目前 我浏览了 Adob e 网站并尝试实现所提供的给定示例 但没有一个更新我的error log file package sling docu exam
  • Android 项目未解析任何静态资源

    由于某种原因 我的 android 项目无法解析 js css 图像的任何静态路径 而它在 web 和 ios 上运行良好 我没有使用离子 所以也许我错过了一些特定的东西 然而 所有这些文件都可以在 android 项目中使用 这是突出显示
  • 训练 Keras 模型会产生多个优化器错误

    所以我需要使用我自己的数据集重新训练 Tiny YOLO 我正在使用的模型可以在这里找到 keras yolo3 https github com qqwweee keras yolo3 我开始训练 遇到多个优化器错误 添加了错误代码以防止
  • Java 中的 Process.exitValue()

    下面是我用来简单地从命令行程序打开和关闭 Internet Explorer 的程序 我在 Windows XP 操作系统上使用 Java 6 运行我的程序 Runtime runtime Runtime getRuntime Proces
  • PHPUnit 严格模式 - 如何更改默认超时

    我想继续在严格模式下运行我的单元测试 以便我可以轻松地了解任何异常长的测试 但同时 1 秒的默认超时是不够的 我可以为所有测试更改它吗 我知道我可以使用以下命令为每个课程 和单独的测试 设置超时 short medium long注释 但是
  • 模型不学习

    背景 我有一个非常简单的脚本 它创建了一个 keras 模型 旨在充当异或门 我在中生成了 40000 个数据点get data功能 它创建两个数组 一个按某种顺序包含 1 和 0 的输入数组 以及一个 1 或 0 的输出 Issue 当我
  • 如何在手机上安装特定版本的 Android 进行测试?

    我的老板最近给了我一部 HTC Wildfire 手机 用于制作我们的一个移动应用程序的 Android 版本 这一切都很好 只是该应用程序需要 API 级别 8 即 Android 2 2 而手机本身只有 Android 2 1安装 经过
  • 如何处理Retrofit 2.0中的错误

    我想处理 Retrofit 2 0 中的错误 得到例如code 404 and body null but errorBody 包含数据在ErrorModel Boolean status and String info This is e
  • 如何优雅地调用名称保存在变量中的 Perl 子例程?

    我将要在运行时调用的子例程的名称保存在名为 action 的变量中 然后我用它在正确的时间调用该子程序 action 工作正常 我唯一不喜欢的是它很丑 每次我这样做时 我都觉得有义务为下一个开发人员添加评论 call the sub by
  • 如何返回 WKWebView 历史记录中的起点

    我正在尝试找到一种方法来向后跳转到起点WKWebView历史 假设我有一个主页 起始页 WKWebView init 并带有指向 google com 的链接 所以我点击链接 然后点击下一步谷歌网站我点击另一个链接谷歌地图 所以我距离起始页
  • 已安装 JSON Server 但显示消息 Command Not Found

    我已经通过 npm 在其他计算机上安装了 json server 但在我的 MacBook Pro 上 命令运行成功 当我执行命令 json server db json 时 会显示以下消息 Errors Screenshot https
  • 在 Windows 7 中找不到 HAXM 设备

    我正在尝试使用 Android Studio 开发移动应用程序 但我总是收到一条带有以下消息的弹出消息 运行此 AVD 需要 Intel HAXM 未找到 HAXM 设备 在 BIOS 安全设置中启用 VT x 确保 HAXM 正确安装 如
  • LaTex写中文的最佳组合是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有人推荐xelatex 但有人坚持latex CJK 哪个更喜欢 谢谢 我使用 LaTeX CJK 效果很好 确保您的文本编辑器支持 unicode
  • 照片上传 getimagesize() 警告 - 文件名不能为空

    我遇到了一个难题 想知道是否有人能够给我一个直接的答案 所以我使用 PHP MySQL 构建了一个照片上传脚本 在脚本中 照片在上传时会被重新调整大小并被赋予临时名称 我使用几张图片 文件大小 220 KB 960 x 720 对其进行了测
  • 如何仅显示 Visual Studio 2010 (TFS) 中当前打开的解决方案的待定更改,而不显示所有更改的完整列表?

    有没有办法强制 Visual Studio 2010 仅显示当前打开的解决方案的待定更改 我正在处理同一项目的多个分支 并更改大多数分支中的相同文件 每次手动检查待处理的更改并仔细检查是否选择了当前正在处理的文件是非常痛苦的 打开挂起的更改
  • 如何使用匿名结构声明变量

    下面的代码无法编译 我可以理解为什么 但无论如何我都需要让它工作 最好是以符合标准的方式 extern const struct int x a const struct int x a 1 编译器会说 错误 a 的类型冲突 即使类型相同
  • 带有突出显示文本的 JavaFX TableView

    我想突出显示显示在JavaFX TableView 到目前为止我正在使用Text对象在TextFlow对象 为了突出显示文本中的特定部分 我使用标签将文本分成几部分 javafx scene text对象 使用以下代码突出显示或不突出显示
  • Observable:按时间间隔获取最新值,直到源完成

    我正在寻找一个具有类似于以下签名的可观察选择器 static IObservable
  • Levenberg-Marquardt 算法和 ODR 之间的区别

    I was able to fit curves to a x y dataset using peak o mat http qceha net as shown below Thats a linear background and 1
  • SQL:根据用户注册表和事件日志计算第一天保留率

    我需要按用户注册日期计算第一天的留存率 第 1 天留存率定义为注册日期 1 天后返回的用户数量除以注册日期当天注册的用户数量 这是用户表 CREATE TABLE registration user id SERIAL PRIMARY KE