【sql】在电商情境下提取数据

2023-10-27

总结了几个使用sql语言对电商业务的问题的提数思路。因为网上公开的数据难以获取,这里是取自公开出版书籍中的随书资源,过程在自己的workbench里进行实操,重在展示解决问题的语句的思路。

mysql 5.7.17

1.计算用户的次日、3日、7日留存情况

现在有一张用户登录表user_login,这张表记录了每个用户每次登录的时间,包含uid(用户ID)、login_time(登录时间)两个字段。我们想看用户的次日留存数、三日留存数、七日留存数(只要用户首次登录以后再登录就算留存下来了)

select
sum(case when 间隔日>=7 then 1 else 0 end )as '7日留存',
sum(case when 3<=间隔日<7 then 1 else 0 end )as '3日留存',
sum(case when 1<=间隔日<3 then 1 else 0 end )as '次日留存'
from(
	select t1.uid,datediff(last_login,first) as '间隔日'
	from
		(select
		uid
		,date(min(login_time)) as 'first_login'
		from
		duibi.user_login
		group by
		uid)t1
		left join
		(select
		uid
		,date(max(login_time)) as 'last_login'
		from
		duibi.user_login
		group by
		uid)t2
		on t1.uid=t2.uid)t3

2.求累计和

现在有一张2019年一整年的订单表consum_order_table,这张表包含order_id(订单ID)、uid(用户ID)和amount(订单金额)三个字段,现在我们想看下80%的订单金额最少是由多少用户贡献的

因为这个版本的不支持over()函数,所以代码繁琐了一点

select sum(case when rate<0.8 then 1 else 0 end )as count_id
from
	(select t3.upto_amount/(select sum(consum_order_table.amount) from consum_order_table)as rate
    from 
		(select t1.uid,sum(user_amount2) as upto_amount
		from
			(select uid,sum(amount) as user_amount1
			from duibi.consum_order_table
			group by uid )as t1
			join
			(select uid,sum(amount) as user_amount2
			from duibi.consum_order_table
			group by uid )as t2
			on t1.uid<=t2.uid
			group by t1.uid
			order by upto_amount desc) as t3)as t4

3.获取某段时间的新增用户数

现在有一张用户表user_reg_table,这张表包含uid(用户ID)、reg_time(注册时间)两个字段,我们想获取某一天的新增用户数,以及该天对应的过去7天内每天的平均新增用户数

select 
count(if ('2019-12-29'=date(reg_time),uid,null) )as '某天新增用户数',
count(if(0<datediff('2019-12-29',date(reg_time))<=6,1,0)) /7 as '近7天平均新增用户数'
from duibi.`user_reg_table`

4.获取用户首次购买时间

现在有一张first_order_table表,这张表包含order_id(订单ID)、uid(用户ID)和order_time(订单时间)三个字段,想获取每个用户的首次购买时间,以及首次购买时间是否在最近7天内

 

select
uid,t1.首次购买时间,
if(0<datediff('2020-01-06',首次购买时间) <=6,'是', '否') as '是否在最近7天内'
from(
    select
    uid,min(order_time) as '首次购买时间'
    from duibi.first_order_table
    group by uid)as t1

5.同时获取用户和订单数据

使用的是用户表user_reg_table和first_order_table表,现在想获取过去7天每天的新增用户数、订单数、下单用户数

 这题我的解法不是很好,也不是同时查询出需要的三个数据,此题解法待优化

6.获取沉默用户数

用user_reg_table和first_order_table,获取沉默用户数,已注册但最近30天内没有购买记录。 

select count(uid)
from duibi.`user_reg_table`
where uid not in(
	select  distinct uid
	from duibi.first_order_table
	where datediff('2020-02-09',date(order_time))<=30)

7.获取新用户的订单数

用user_reg_table和first_order_table。获取最近7天注册的新用户在最近7天内的订单数是多少 

select count(order_id)
from
	(select uid
	from duibi.`user_reg_table`
	where datediff('2020-01-07',date(reg_time))<=7 )as t1
	join
    (select  uid,order_id
	from duibi.first_order_table
	where datediff('2020-01-07',date(order_time))<=7 )as t2
    on t1.uid=t2.uid

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

【sql】在电商情境下提取数据 的相关文章

  • java.sql.SQLException: ORA-01005: 给定的密码为空;登录被拒绝

    我在尝试连接到数据库时遇到以下异常 java sql SQLException ORA 01005 null password given logon denied at oracle jdbc driver T4CTTIoer proce
  • RedGate ReadyRoll 的替代品了吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种经济实惠的 RedGate ReadyRoll 替代方案 以实现 SQL 的持续部署 我
  • 在 SQL 查询中使用 fn_Split

    我一直在努力争取fn Split在我的查询中正常工作 我到处搜索 并在这里找到了似乎接近我需要的答案 但我仍然无法使其发挥作用 基本上我试图返回与数组中的条目匹配的记录 我已经有了一个与我的数据库一起使用的表值函数 如下所示 Select
  • Spring Boot如何加入自定义查询

    我需要创建一个端点 该端点按州返回人口普查数据以及城市列表 我目前使用两个端点来获取此数据 目前回应 自定义查询一 censusByState id 1 code 11 name Rond nia statePopulation 18152
  • 如何在 SQL 中的时区中使用“America/New_York”

    我有这段代码在 SQL 中运行良好 但是我想使用不同的时区格式 例如 America New York 代替 US Eastern Standard Time SELECT TODATETIMEOFFSET CAST CURRENT TIM
  • 从 oracle 中为每个组选择最新行

    我在留言簿中有一张包含用户评论的表格 列有 id user id 标题 评论 时间戳 我需要为每个用户选择最新行 我尝试使用 group by 执行此操作 但没有管理它 因为我无法在按 user id 分组的同一查询中选择任何其他内容 SE
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • SQL日期格式转换? [dd.mm.yy 至 YYYY-MM-DD]

    是否有 mySQL 函数可以将日期从 dd mm yy 格式转换为 YYYY MM DD 例如 03 09 13 gt 2013 09 03 由于您的输入是表单中的字符串03 09 13 我假设 因为今天是 2013 年 9 月 3 日 d
  • 寻找多列索引的最佳顺序

    假设我有一个包含两个索引的表 一个位于 a 列 一个位于 a b 和 c 列 我注意到 根据索引定义中列的顺序 MySQL 可能最终使用单列索引而不是多列索引 即使多列索引中的所有三列都在 ON 中引用JOIN 的一部分 这有点引出了一个问
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • BULK INSERT 中格式附近的语法不正确?

    我试图找出为什么我使用的 BULK INSERT 命令无法识别命令中使用的 FORMAT 和 FIELDQUOTE 选项 BULK INSERT dbo tblM2016 RAW Current Import File FROM x tms
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • 如何将 T-SQL 中的结果连接到列中?

    我正在处理一个查询 它应该给我这样的结果 Name Surname Language Date James Hetfield en gb fr 2011 01 01 Lars Ulrich gb fr ca 2011 01 01 但我的选择
  • Oracle Many OR 与 IN () 的 SQL 性能调优 [重复]

    这个问题在这里已经有答案了 我手头没有 解释计划 您能帮忙判断以下哪一个更有效吗 选项1 select from VIEW ABC where STRING COL AA OR STRING COL BB OR STRING COL BB
  • MySQL:用户对数据库的访问被拒绝

    我正在尝试在 Heroku 上的远程 SQL 服务器上创建一个数据库 clearDB 我与此联系 mysql host lt
  • 为什么 Orchard 在执行内容项查询时如此慢?

    假设我想查询所有 Orchard 用户 ID 并且还想包括那些已被删除 也称为软删除 的用户 该数据库包含大约 1000 个用户 Option A 大约需要 2 分钟 Orchard ContentManagement IContentMa
  • 带有 viewbags 的 MVC 数据集

    如何将数据集放入视图袋中并在视图中显示结果 我有一个来自模型的数据集 并将其写入视图包 我想使用 foreach 循环从视图中的视图包中获取数据行 我已经有一个变量进入视图 所以我无法正常传递数据集 每页我还会有许多其他数据集 所以我认为
  • 将两个sql查询合并为一个查询

    如何组合以下 2 个查询以便获得两列 PAYMODE 和付款类型 两个查询都很相似 并且针对同一个表 将两个 sql 查询合并为一个查询 这样我就不需要执行两个单独的查询 SELECT ETBL DESC TXT as PAYMODE FR
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色

随机推荐

  • jenkins和jdk安装教程(安装支持jdk8的最新版本)

    1 安装版本查看 Jenkins稳定版 2 进入清华镜像 下载对应版本的rpm包 清华镜像 3 已rpm安装过Jenkins 现在先卸载 1 卸载 rpm e jenkins 2 检查是否卸载成功 rpm ql jenkins 3 彻底删除
  • (大集合)AI工具和用法汇总—集合的集合

    AI 工具和用法汇总 汇集整理 by Staok 瞰百 源于相关资料在我这慢慢越积累越多 到了不得不梳理的程度 文中有许多内容作者还没有亲自尝试 所以很多内容只是罗列 但信息大源都已给出 授人以渔 欢迎 PR 补充细节内容 比如 好的教程
  • HTML+CSS简单复习

    目录 什么是HTML CSS VSCode编辑器 HTML基本结构和属性 HTML初始代码 HTML注释 标题与段落 文本修饰标签 图片标签 路径的引入 链接标签 锚点 特殊字符 列表标签 表格标签 表单标签 div和span CSS基础语
  • 【机器学习笔记4】逻辑回归模型

    目录 什么是逻辑回归 Sigmoid函数 决策边界 逻辑回归的损失函数 为什么平方误差模型不可行 对数损失函数 单个样例损失 整体损失函数 梯度下降算法 补充 F1 score评价指标 F1 Score简介 相关概念 F Score 示例及
  • 第一次实践一个多文件的代码

    收获 1 ifndef防止头文件重复包含 为了避免同一个头文件被包含 include 多次 C C 中有两种宏实现方式 一种是 ifndef方式 另一种是 pragma once方式 ifndef 标识符A 每一个头文件都要有自己独特的标识
  • 小程序通过webview实现本地任意文件上传

    微信小程序做文件上传的时候 只能选择相册的图片或者视频 没办法选择手机内存卡里的文件 比如 word pdf文件等等 下面可以通过 webview 的方式 借用 h5 的方式即可实现上面的功能 添加业务域名 webview里面打开的地址 首
  • 【pytorch】pytorch-yolov3拍照并保存,进行检测后遍历所有图片并显示图片

    参看摄像头参数 v4l2 ctl d dev video0 all 安装numpy sudo apt get install python numpy 下载onnx pip install onnx 效果图 拍照部分 url http 19
  • HashMap实现原理及源码分析

    哈希表 hash table 也叫散列表 是一种非常重要的数据结构 应用场景及其丰富 许多缓存技术 比如memcached 的核心其实就是在内存中维护一张大的哈希表 而HashMap的实现原理也常常出现在各类的面试题中 重要性可见一斑 本文
  • Dubbo实战(三)多注册中心配置

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net FX SKY article details 51935533 本文将展示如何在Dubbo中进行多注册中心配置 开发环境 JDK 1 7 Maven
  • 如何实现前后端交互

    大概流程 首先我们要实现前端的页面 我们要有一个页面来让我们肉眼可以看见 JS的语法我们要掌握 1因为我们要通过JS来绑定事件 比如我们点击按钮就能发送数据给服务器 或者从服务器获取资源 2我们通过ajax请求来实现向服务器发送请求 3通过
  • mfc140u.dll丢失怎么解决?,哪种方法更简单?

    如果您在运行 Windows 操作系统时遇到了 mfc140u dll 丢失 或 找不到 mfc140u dll 等错误提示 那么这意味着您的计算机遗失了该文件 mfc140u dll 文件是 Microsoft Visual C 的一部分
  • jmeter如何进行一个简单的测试(超级详细,有图有文字,闭着眼都能成功)

    大家好 我是雄雄 内容先知 前言 软件获取 开始测试 1 新建线程组 2 创建一个请求 3 添加HTTP信息头 4 开始测试 5 查看请求情况 前言 上头问题要服务器的配置 基于我们现在做的项目 需要安排别人去采购服务器 给出的消息是 20
  • pytest.mark.parametrize及mock使用

    目录 pytest mark parametrize mock patch pytest mark parametrize 现在有 zjk py 模块 想测试其中 add 函数的功能 传入 x y 把 x 平方后的结果与 y 相加返回 zj
  • 在线旅游OTA行业调研报告-携程美团同程飞猪booking对比分析

    1 行业现状 根据前瞻研究院数据显示 2019年 我国在线旅游交易规模首次突破万亿规模 达到10866 5亿元 同比增长11 4 随着市场不断扩大 行业竞争也愈发激烈 市场上形成了以携程系 阿里系 美团系三大实力角逐的格局 在线酒店预订市场
  • Root cause: BlockMissingException【查看修复HDFS中丢失的块】ORG.APACHE.HADOOP.HDFS.BLOCKMISSINGEXCEPTION: COULD

    首先得好看有多少损坏的文件 其中需要使用Hadoop的fsck命令 以下是官方解释 用法 hadoop fsck 路径 以上将会展示该路径下所有受损的文件 最后用 delete 可以清除掉所有受损的文件
  • 第二十三课,抗锯齿(Anti Aliasing)

    Anti Aliasing nti eli s 反走样 文章目录 超采样抗锯齿 Super Sample Anti aliasing SSAA 多重采样抗锯齿 Multisample Anti aliasing MSAA GLFW中的MSA
  • 网络编程day1

    https note youdao com s WcWYSExkhttps note youdao com s WcWYSExk请简述字节序的概念 并用共用体 联合体 的方式 判断本机的字节序 字节序是指在计算机中存储多字节数据时 字节的顺
  • long long类型

    long long在win32中是确实存在 长度为8个字节 定义为LONG64 记住它表示的是64位即可 但对于不同的系统 在使用前还是测试一下为好 long long是C 的64位整型的基本类型 现任 长整型 long long占用8个字
  • IO流进阶

    IO流加强 字符流 整体框架 FileReader 文件字符输入流 作用 以内存为基准 可以把文件中的数据以字符的形式读入到内存中去 构造方法 构造器 说明 public FileReader File file 创建字符输入流管道与源文件
  • 【sql】在电商情境下提取数据

    总结了几个使用sql语言对电商业务的问题的提数思路 因为网上公开的数据难以获取 这里是取自公开出版书籍中的随书资源 过程在自己的workbench里进行实操 重在展示解决问题的语句的思路 mysql 5 7 17 1 计算用户的次日 3日