【数据分析面试】53.推送消息的分布情况(SQL)

在这里插入图片描述

题目

我们有两个表,一个是 notification_deliveries 表,另一个是包含 created 和购买 conversion datesusers 表。如果用户没有购买,那么 conversion_date 列为 NULL

编写一个查询,以获取用户转换前的推送通知总数的分布情况。

示例:

输入:

notification_deliveries

列名类型
notificationVARCHAR
user_idINTEGER
created_atDATETIME

users

列名类型
idINTEGER
created_atDATETIME
conversion_dateDATETIME

输出:

列名类型
total_pushesINTEGER
frequencyINTEGER

答案

解题思路

如果查看用户转换前收到的推送通知总数的分布情况,最终的结果应该看起来像下面这样:

total_pushes | frequency
-------------+----------0        |  1001        |  2502        |  300...       |  ...

购买前收到消息次数为0的用户人数有100个, 购买前接受了1次消息的有250人,接收了2次消息的用户有300人……

我们需要获取用户转换前推送通知的总数分布,可以考虑以下几点:

  1. 在两个表之间根据 user_id 字段进行连接。
  2. 排除所有未转换的用户。
  3. conversion_date 设置为大于 notification_deliveries 表中的 created_at 值,以获取发送给用户的所有通知。

我们知道这是一个 LEFT JOIN,以确保包含那些在没有任何推送通知的情况下转换的用户。

我们可以先计算每个用户的通知数量,然后按该数量分组,以获取总体分布。

答案代码

下面是实现该需求的SQL查询:

SELECT total_pushes, COUNT(*) AS frequency
FROM (SELECT u.id, COUNT(nd.notification) as total_pushesFROM users AS uLEFT JOIN notification_deliveries AS ndON u.id = nd.user_idAND u.conversion_date >= nd.created_atWHERE u.conversion_date IS NOT NULLGROUP BY 1
) AS pushes
GROUP BY 1
  • LEFT JOIN: 确保即使用户没有收到任何推送通知也能被包含在内。
  • u.conversion_date >= nd.created_at: 确保只计算在用户转换之前发送的通知。
  • COUNT(nd.notification): 计算每个用户在转换前收到的通知数量。
  • GROUP BY: 对每个用户计算的通知数量进行分组,然后对这些分组进行频率统计。

通过以上查询,可以得到每个用户在转换前收到的推送通知总数的分布情况。

更多详细答案可关注公众号查阅。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java反射角度简单理解spring IOC容器

概述 Java反射(Reflection)是Java编程语言的一个特性,它允许在运行时对类、接口、字段和方法进行动态查询和操作。反射提供了一种在运行时查看和修改程序行为的能力,这通常用于实现一些高级功能,如框架(Spring)、ORM&…

算法:树状数组

文章目录 面试题 10.10. 数字流的秩327. 区间和的个数315. 计算右侧小于当前元素的个数 树状数组可以理解一种数的存储格式。 面试题 10.10. 数字流的秩 假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。 请实现数据结构…

网络信息安全

目录 引言 网络信息安全的基本概念 定义 主要目标 网络信息安全的范围 主要威胁 恶意软件 黑客攻击 拒绝服务攻击 社交工程 内部威胁 常用技术和防护措施 加密技术 防火墙 入侵检测和防御系统 访问控制 多因素认证 安全审计和监控 安全培训和意识提升 未来发…

无人机支持下的自然灾害风险评估技术应用

张老师(副教授),长期从事无人机遥感技术与应用,主持多项国家级科研项目,编写著作2部,第一作者发表科研论文20余篇。对无人机遥感的多平台、多传感应用现状以及涉及的核心技术具有很深的理解,精通…

失业潮中如何突围?优秀PPT案例助你职场逆袭

在这个变幻莫测的时代,失业潮像一场突如其来的暴风雨,许多人在职场的大海中迷失方向。但别担心,即使风浪再大,总有勇敢的航海者能够乘风破浪,找到属于自己的那片新大陆。 今天,我们就来聊聊,在…

MyBatis 学习笔记(一)

MyBatis 封装 JDBC :连接、访问、操作数据库中的数据 MyBatis 是一个持久层框架。 MyBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects(DAO) SQLMaps:数据库中的数据和 Java数据的一个映射关系 封装 JDBC 的过程Data Access Ob…

C++入门:从C语言到C++的过渡(3)

目录 1.内联函数 1.1内联函数的定义 1.2特性 2.auto关键字 2.1auto的简介 2.2注意事项 3.范围for 4.nullptr空指针 1.内联函数 在C语言中,无论使用宏常量还是宏函数都容易出错,而且无法调试。而C为了弥补这一缺陷,引入了内联函数的概…

为了“降本增效”,我用AI 5天将SpringBoot迁移到了Nodejs

背景 大环境不好,各行各业都在流行“降本增效”,IT行业大肆执行“开猿节流”,一顿操作效果如何?普通搬砖人谁会在乎呢。 为了收紧我的口袋,决定从头学习NodejsTypeScript,来重写我的Java后端服务。 其实这…

浅谈面向对象--知识补充

This关键字 this 内存图 this关键字表示当前对象本身,一般用于类的内部,其内部存在一个地址,指向当前初始化的对象本身。 当new一个对象时,实际上产生了两个引用,一个是供类Dog内部调用其成员变量和成员方法的this关键…

kotlinx.coroutines.debug.AgentPremain

大家好 我是苏麟 . 项目引入AI大模型 debug 出现报错 设置 勾选

配置docker阿里云镜像地址

一、安装docker的步骤: 1.yum install -y yum-utils 2.yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo --配置阿里云仓库3.yum makecache fast4.yum install docker-ce -y5.docker version …

Vue3实战笔记(43)—Vue3组合式API下封装可复用ECharts图表组件

文章目录 前言一、封装echart图标钩子二、使用步骤总结 前言 接上文,已经安装好了ECharts,开始封装组件方便使用。 一、封装echart图标钩子 首先应用我们之前学习的钩子方式,在hooks目录下创建一个名为 useECharts.js 的文件,用…

【机器学习300问】97、机器学习中哪些是凸优化问题,哪些是非凸优化问题?

在机器学习的领域中,多数模型的参数估计问题实质上可以转化为优化问题。鉴于机器学习模型的多样性,不同的模型会对应着不同的损失函数,进而形成各具特色的优化问题。了解优化问题的形式和特点,对于提升我们求解模型参数的效率和准…

微信好友这样打标签更高效!

为什么要做标签管理? ① 通过标签管理,可以清晰的知道每个私域好友的关系程度,如哪些是忠诚客户,哪些是意向客户,哪些是刚加上的客户等等。 这样就知道下一步要怎么操作,做到精细化运营。如忠诚客户跟进维护&#x…

Embedding 模型的选择和微调

目录 引言 向量模型在 RAG 系统中的作用 1. 对 query 和 私域知识 进行向量化表示 2. 动态更新知识库 3. 数据隐私和安全 有哪些性能不错的向量模型 OpenAI Embedding JinaAI Embedding BAAI/bge Embedding 模型评测 MTEB 排行榜:https://huggingface.co…

第十六节:带你梳理Vue2: 生命周期与钩子函数

前沿: 通过前面几节的学习,我们已经对vue有了初步的了解,大致了解了vue可以帮我们干什么, 那么接下来我们就来看看vue的生命周期和它常用的钩子函数, 1. 理解生命周期的含义 生命周期:就是一个组件从实例化创建并添加到DOM树开…

读论文 | Small object detection model for UAV aerial image based on YOLOv7

目录 1、前言 2、摘要 3、论文的方法 3.1 方法描述 3.2 方法改进 3.3 本论文的模型图 3.4 本文的数据集: 3.5 论文实验 3.6 解决的问题 3.7 论文总结 (1)文章优点 (2)方法创新点 (3&#xff0…

地质考察AR远程交互展示系统辅助老师日常授课

广东这片充满活力的土地,孕育了一家引领ARVR科技潮流的杰出企业——深圳华锐视点,作为一家专注于VR/AR技术研究与业务开发的先锋公司。多年来,我们不断突破技术壁垒,将AR增强现实技术与各行各业的实际需求完美结合,助力…

Cloneable接口和深拷贝

在java中如何对对象进行拷贝呢?我们可以使用Object类中的clone方法。 一、浅拷贝 在使用clone方法对对象进行拷贝的时候,需要注意: 1.需要重写clone方法; 2.clone方法的返回值是Object类,需要强制类型转化&#xf…

部门来了个测试开发,听说是00后,上来一顿操作给我看蒙了...

公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司实习半年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍&#xff01…