Hive SQL 每日SQL

news2024/11/15 21:01:29

1、查询订单明细表(order_detail)中销量(下单件数)排名第二的商品id,如果不存在返回null,如果存在多个排名第二的商品则需要全部返回。

需要用到的表:

订单明细表:order_detail

e2d686bb24c1bd657e413ec9d700bbd0.png

代码:

select 
sku_id
from 
(
select 
sku_id
,sale_num
,dense_rank() over (order by sale_num desc ) as drp 
from 
(
select 
sku_id
,sum(sku_num) as sale_num 
from  order_detail
group by sku_id
)a
)b 
where drp = 2

结果:

2、查询订单信息表(order_info)中最少连续3天下单的用户id,期望结果如下

 

订单信息表:order_info

order_id
(订单id)

user_id
(用户id)

create_date
(下单日期)

total_amount
(订单金额)

1

101

2021-09-30

29000.00

10

103

2020-10-02

28000.00

代码

select 
distinct user_id
from 
(
select 
user_id
,date1
,case when (datediff(date2,date1)=1 and datediff(date3,date2)=1 and datediff(date3,date1)=2) then 1 else 0 end  diff
from 
(
select 
distinct user_id
,create_date as date1
,lead(create_date) over (partition by user_id order by create_date) as date2
,lead(create_date,2) over (partition by user_id order by create_date) as date3
from 
(select 
 distinct user_id,create_date from order_info
)a
)b
)c where diff =1

结果

3、从订单明细表(order_detail)统计各品类销售出的商品种类数及累积销量最好的商品,

期望结果如下:

category_id
<string>

category_name
<string>

sku_id
<string>

name
<string>

order_num
<bigint>

sku_cnt
<bigint>

1

数码

2

手机壳

302

4

2

厨卫

8

微波炉

253

4

3

户外

12

遮阳伞

349

4

需要用到的表

订单明细表:order_detail

order_detail_id
(订单明细id)

order_id
(订单id)

sku_id
(商品id)

create_date
(下单日期)

price
(商品单价)

sku_num
(商品件数)

1

1

1

2021-09-30

2000.00

2

2

1

3

2021-09-30

5000.00

5

22

10

4

2020-10-02

6000.00

1

23

10

5

2020-10-02

500.00

24

24

10

6

2020-10-02

2000.00

5

商品信息表:sku_info

sku_id
(商品id)

name
(商品名称)

category_id
(分类id)

from_date
(上架日期)

price
(商品价格)

1

xiaomi 10

1

2020-01-01

2000

6

洗碗机

2

2020-02-01

2000

9

自行车

3

2020-01-01

1000

商品分类信息表:category_info

category_id
(分类id)

category_name
(分类名称)

1

数码

2

厨卫

3

户外

代码:

with t1 as (
select 
a.category_id
,b.category_name
,count(sku_id) as sku_cnt
from sku_info a 
left join category_info b on a.category_id =b.category_id
group by 
a.category_id
,b.category_name)
,
t2 as (
select * 
from 
(
select  
category_id
,sku_id
,name
,order_num
,rank() over(partition by category_id order by order_num desc) rk
from (
select 
b.category_id 
,a.sku_id
,b.name
,sum(a.sku_num) as order_num
from order_detail  a 
left join sku_info b on a.sku_id=b.sku_id
group by 
b.category_id 
,a.sku_id
,b.name
)a
)b
where rk='1'
)

select  
t2.category_id
,t1.category_name
,t2.sku_id
,t2.name
,t2.order_num
,t1.sku_cnt
from t2 
left join t1 on t2.category_id = t1.category_id

结果:

4、从订单信息表(order_info)中统计每个用户截止其每个下单日期的累积消费金额,以及每个用户在其每个下单日期的VIP等级。

用户vip等级根据累积消费金额计算,计算规则如下:
设累积消费总额为X,
若0=<X<10000,则vip等级为普通会员
若10000<=X<30000,则vip等级为青铜会员
若30000<=X<50000,则vip等级为白银会员
若50000<=X<80000,则vip为黄金会员
若80000<=X<100000,则vip等级为白金会员
若X>=100000,则vip等级为钻石会员

期望结果如下:

user_id
<string>
(用户id)

create_date
<string>
(下单日期)

sum_so_far
<decimal(16,2)>
(截至每个下单日期的累计下单金额)

vip_level
<string>
(每个下单日期的VIP等级)

101

2021-09-27

29000.00

青铜会员

101

2021-09-28

99500.00

白金会员

101

2021-09-29

142800.00

钻石会员

101

2021-09-30

143660.00

钻石会员

102

2021-10-01

171680.00

钻石会员

102

2021-10-02

177850.00

钻石会员

103

2021-10-02

69980.00

黄金会员

103

2021-10-03

75890.00

黄金会员

104

2021-10-03

89880.00

白金会员

105

2021-10-04

120100.00

钻石会员

106

2021-10-04

9390.00

普通会员

106

2021-10-05

119150.00

钻石会员

107

2021-10-05

69850.00

黄金会员

107

2021-10-06

124150.00

钻石会员

108

2021-10-06

101070.00

钻石会员

108

2021-10-07

155770.00

钻石会员

109

2020-10-08

24020.00

青铜会员

109

2021-10-07

153500.00

钻石会员

1010

2020-10-08

51950.00

黄金会员

需要用到的表:

订单信息表:order_info

order_id
(订单id)

user_id
(用户id)

create_date
(下单日期)

total_amount
(订单金额)

1

101

2021-09-30

29000.00

10

103

2020-10-02

28000.00

代码

select  
*
,case when (sum_so_far >=0 and sum_so_far <10000) then '普通会员'
	  when (sum_so_far >=10000 and sum_so_far <30000) then '青铜会员'
    when (sum_so_far >=30000 and sum_so_far <50000) then '白银会员'
    when (sum_so_far >=50000 and sum_so_far <80000) then '黄金会员'
    when (sum_so_far >=80000 and sum_so_far <100000) then '白金会员'
    else '钻石会员' end vip_level
from (
select   
user_id
,create_date
,sum(sum_so_far) over(partition by user_id order by create_date rows BETWEEN unbounded preceding and current row  ) as sum_so_far
from  
(
select  
user_id
,create_date
,sum(total_amount) as sum_so_far 
from order_info 
group by 
user_id
,create_date
)a
)b

5、从订单信息表(order_info)中查询首次下单后第二天仍然下单的用户占所有下单用户的比例,结果保留一位小数,使用百分数显示

期望结果如下:

percentage
<string>

70.0%

需要用到的表:

订单信息表:order_info

order_id (订单id)

user_id (用户id)

create_date (下单日期)

total_amount (订单金额)

1

101

2021-09-30

29000.00

10

103

2020-10-02

28000.00

代码

with t as (
select
user_id
,create_date as date1
,lag(create_date,1,'null') over(partition by user_id order by create_date ) as date2
,lead(create_date) over(partition by user_id order by create_date ) as date3
from (select distinct user_id,create_date from order_info)a
)


select 
concat(round(avg(if(datediff(date3,date1)=1,1,0))*100,1),'%') as percentage 
from t 
where date2='null'

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

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

相关文章

【谷粒商城基础篇】仓储服务:仓库维护

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念&#xff08;第一、二章&#xff09;基础环境搭建&#xff08;第三章&#xff09;整合SpringCloud整合SpringCloud、SpringCloud alibaba&#xff08;第四、五章&#xff09;前端知…

android 创建aar包

1. 背景 由于新入职公司在做硬件接入的项目&#xff0c;需要接入多款硬件&#xff0c;而且&#xff0c;几个app的功能不太一样。于是&#xff0c;需要模块化开发&#xff0c;并且许多东西都是可以复用的&#xff08;像网络框架、log、shareprefrence、权限申请等&#xff09;。…

嵌入式HLS 案例开发步骤分享——Zynq-7010/20工业开发板(1)

目 录 前 言 3 1 HLS 开发流程说明 5 1.1 HLS 工程导入 5 1.2 编译与仿真 6 1.3 综合 8 1.4 IP 核封装 10 1.5 IP 核测试 14 前 言 本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows 7/10 64bit、Xilinx Vivado 2017.4 、Xilinx Vivado HLS 2017.4 、Xilinx…

数据结构|排序算法详解

​​​​​​​目录 一.插入类 1.直接插入排序 2.希尔排序 二.选择类&#xff0c;排一次选出一个最值 1.选择排序 2.堆排序 三.交换类&#xff0c;通过一直交换一次确定数字的位置 1.冒泡排序 2.快速排序 2.1 hoare版本 2.2挖坑法 2.3前后指针法 四.归并类 1.归并…

Go第 5 章:程序流程控制

第五章程序流程控制 5.1程序流程控制介绍 在程序中&#xff0c;程序运行的流程控制决定程序是如何执行的&#xff0c;是我们必须掌握的&#xff0c;主要有三大流程控 制语句。 1)顺序控制 2)分支控制 3)循环控制 5.2 顺序控制 程序从上到下逐行地执行&#xff0c;中间没有任…

C++标准库的智能指针:shared_ptr、weak_ptr和unique_ptr

文章目录智能指针shared_ptr模版类week_ptr模版类unique_ptrC中是没有内存回收机制的&#xff0c;我在之前的一篇文章中提到使用指针的一些基本方法。C在std标准库中也提供了三种封装过的指针模版类&#xff0c;称作为智能指针&#xff1a;shared_ptrunique_ptrweek_ptr 我这里…

JVM性能调优详解

前面我们学习了整个JVM系列&#xff0c;最终目标的不仅仅是了解JVM的基础知识&#xff0c;也是为了进行JVM性能调优做准备。这篇文章带领大家学习JVM性能调优的知识。 性能调优 性能调优包含多个层次&#xff0c;比如&#xff1a;架构调优、代码调优、JVM调优、数据库调优、操…

最优二叉树(哈夫曼树)

一、最优二叉树 1、定义 官方定义&#xff1a;在权值为w1&#xff0c;w2&#xff0c;…&#xff0c;wn的 n个叶子所构成的所有二叉树中&#xff0c;带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树。 通俗来讲&#xff0c;就是给定N个权值作为N个叶子结点&…

仿牛客论坛项目总结

一.数据库中每一张表有哪些字段 user表 用户表 &#xff08;1&#xff09;id 用户的id &#xff08;2&#xff09; username 用户名 &#xff08;3&#xff09;password 密码 &#xff08;4&#xff09;salt 盐 &#xff08;5&#xff09;emai邮箱 &#xff08;6&…

PAT甲级1008 Elevator C++/C语言

1008 Elevator 分数 20 作者 CHEN, Yue 单位 浙江大学 The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds …

联邦学习将如何影响您的日常生活?

人工智能 (AI) 被认为是下一次工业革命的最大创新之一&#xff0c;其中包括机器学习。另一方面&#xff0c;随着原油和电力成为现代工业的基础资源&#xff0c;数据成为人工智能和机器学习的关键要素。 数据隐私与需求之间的冲突 训练的数据样本的大小决定了可用于增强 AI 性能…

CPT203-Software Engineering(2)

文章目录5. Scrum Framework5.1 Scrum Roles5.2 Scrum Activities and Artifacts6. Requirements Engineering6.1 User requirements and system requirements6.2 Functional & Non-functional requirements6.2.1 Functional requirements6.2.2 Non-functional requirement…

第一章:C++算法基础之基础算法

系列文章目录 文章目录系列文章目录前言一、排序&#xff08;1&#xff09;快速排序核心思想思路分析模板&#xff08;2&#xff09;归并排序核心思想思路分析模板稳定性时间复杂度二分查找&#xff08;1&#xff09;整数二分核心思想思路分析模板&#xff08;2&#xff09;浮点…

jetson nano系统引导安装(无外设安装方式)

文章目录一.硬件设置二.系统设置一.硬件设置 插入烧写好系统的SD卡将micro USB线接到jetson nano上&#xff0c;另一端USB A接到电脑上为jetson nano插入电源&#xff0c;开机等待电脑检测到如下盘符说明jetson nano连接成功 二.系统设置 进入电脑的设备管理器&#xff0c;查…

【linux】三种权限的使用和更改、粘滞位和yum的使用

目录 1.权限问题 ①什么是权限&#xff1f; ②小问题 ③默认权限 ④如何更改“人”的权限呢&#xff1f; ⑤更改权限的八进制方案 ⑥强制改权限里的“人”&#xff08;权限人文件属性&#xff09; 2.粘滞位 2.yum的使用 1.权限问题 ①什么是权限&#xff1f; 权限人&a…

HTTP协议解析

HTTP概述 HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的应用层协议~~我们平时打开一个网站, 就是通过 HTTP 协议来传输数据的。 HTTP工作过程&#xff1a; 当我们在浏览器中输入一个 "网址"&#xff0c;此时浏览器就会给对应的服务器发送一个 H…

CTF中的PHP特性函数(上)

前言 对于PHP大家一定不陌生&#xff0c;但你知道PHP在CTF中是如何考察的吗&#xff0c;本文给大家带来的是通过PHP特性来进行CTF比赛中解题出题的知识&#xff0c;会介绍一下CTF中常见的php特性以及围绕该知识点的相关案例&#xff0c;因为内容过多这里分成上中下三篇来讲&am…

操作系统的特征

文章目录&#x1f380;前言&#xff1a;本篇博客知识总览&#x1f354;并发&#x1f387;概念&#xff1a;&#x1f354;共享&#x1f387;概念&#xff1a;&#x1f354;虚拟&#x1f387;概念&#xff1a;&#x1f354;异步&#x1f387;概念&#xff1a;&#x1f3f3;️‍&a…

ThinkPHP 多应用模式之Api路由分组+中间件

ThinkPHP 6.1 在多应用模式下实现API路由分组中间件验证业务 目录 1.创建中间件文件 2.迁移中间件到子应用目录中 3.编辑中间件验证业务 修改命名空间 编写handle处理代码 4.注册中间件 编辑中间件文件 TP内置中间件 5.设置路由分组 优化相同控制器前缀 最终效果&am…

【信息论与编码 沈连丰】第六章:连续信息和连续信道

【信息论与编码 沈连丰】第六章&#xff1a;连续信息和连续信道第六章 连续信息和连续信道6.1 连续消息的信息6.2 连续消息在信道上的传输问题6.3 香农信道容量公式6.4 连续消息的识别和理想接收机6.5 连续信源的数字处理及其编码第六章 连续信息和连续信道 6.1 连续消息的信息…