计算即时订单比例-首单使用开窗函数row_number()

1 需求

即时订单和计划订单

订单配送中,如果期望配送日期和下单日期相同,称为即时订单,如果期望配送日期和下单日期不同,称为计划订单。

请从配送信息表(delivery_info)中求出每个用户的首单(用户的第一个订单)中即时订单的比例,保留两位小数,以小数形式显示。

配送信息表 delivery_info

期望结果

2 实现

思路

请从配送信息表(delivery_info)中求出每个用户的首单(用户的第一个订单)中即时订单的比例,保留两位小数,以小数形式显示。

首先需要从数据集中拿出每个用户的首单,一般都是使用排序开窗函数进行操作。然后计算即时订单的比例,只需要从拿出的首单数据中分别计算两个指标,再相除即可,注意需求中需要保留两位小数,所以可以使用 decimal 类型来展示最终的结果。

实现

1 使用开窗函数获取每一个用户的首单数据

复制代码
select * from (
	select user_id,order_date,custom_date,
		row_number() over(partition by user_id order by order_date) rn
	from delivery_info
) t1 where rn=1

2 直接在结果 1 的基础上进行指标的统计和结果的输出即可,需要将结果转换为 decimal(10,2) 展示

复制代码
select 
	cast(round(sum(if(order_date = custom_date, 1, 0)) / count(1), 2) 
         as decimal(10,2)) percentage
from (
	select user_id,order_date,custom_date,
		row_number() over(partition by user_id order by order_date) rn
	from delivery_info
) t1 where rn=1
相关推荐
IT成长日记11 小时前
【Hive入门】Hive数据导出完全指南:从HDFS到本地文件系统的专业实践
hive·hadoop·hdfs·数据导出
IT成长日记12 小时前
【Hive入门】Hive概述:大数据时代的数据仓库桥梁
大数据·数据仓库·hive·sql优化·分布式计算
IT成长日记1 天前
【Hive入门】Hive查询语言(DQL)完全指南:从基础查询到高级分析
数据仓库·hive·hadoop·dql操作
IT成长日记1 天前
【Hive入门】Hive数据模型与存储格式深度解析:从理论到实践的最佳选择
数据仓库·hive·hadoop·数据模型·存储格式
IT成长日记1 天前
【Hive入门】Hive分区与分桶深度解析:优化查询性能的关键技术
数据仓库·hive·hadoop·分区·分桶
Faith_xzc1 天前
Hive 数据同步到 Doris 最佳实践方案:从场景适配到性能调优全解析
大数据·数据仓库·hive·hadoop·doris
酷爱码1 天前
hive默认的建表格式
数据仓库·hive·hadoop
Hadoop_Liang1 天前
Hive 多表查询案例
数据仓库·hive·hadoop
和算法死磕到底3 天前
ubantu18.04(Hadoop3.1.3)Hive3.1.2安装指南
大数据·数据库·hive·hadoop·mysql·hdfs·dubbo
IT成长日记4 天前
【Hive入门】Hive架构与组件深度解析:从核心组件到生态协同
hive·hadoop·架构·架构与组件