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

需要用到的表:

订单明细表:order_detail

代码:

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'

Hive SQL 每日SQL相关推荐

  1. mysql和hive的sql语句,hive中使用sql语句需要注意的事项

    最近在熟悉hive,使用hive中的sql语句过程中出现了一些问题. 1,hive中的insert into语句 hive> select * from t_hive2; OK 1623 611 ...

  2. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨市场分析 II【难度困难】​

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  3. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨报告的记录 II【难度中等】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  4. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 15丨查询活跃业务【难度中等】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨重新格式化部门表【难度中等】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨报告的记录 I【难度简单】

      活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群 ...

  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 13丨每位学生的最高成绩【难度中等】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 13丨每日新用户统计【难度中等】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

  9. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 12丨销售分析 III【难度简单】

     活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升.另有超多CSDN 周边礼物相送. 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人 ...

最新文章

  1. python操作文件夹-Python文件操作大全,随机删除文件夹内的任意文件
  2. Permute Digits
  3. 在FIREBUG控制台中输入 jQuery() 返回 []
  4. 编写高质量JS代码上
  5. HADOOP基本操作命令,及其组件端口
  6. Q115:Linux系统下CodeBlocks对PBRT-V3进行编译和调试
  7. mysql 前10条 平均数_mysql – 每组最新N条记录的平均值
  8. java socket保活_gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流...
  9. grub4dos linux live,grub4dos安装
  10. 小学生计算机兴趣班名字,小学生网名大全
  11. python刷题记录:买帽子
  12. 你真的了解你手机的状态栏吗?
  13. 单片机运算能力与PC运算能力PK
  14. ResNet 阅读学习和实现
  15. FMC子卡设计资料:FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡
  16. iOS 好心态带来好人生
  17. 如何评估您的股票交易模型
  18. [转]全国停止一切娱乐活动 文化部将督查娱乐活动禁止情况
  19. 在提示框中:免费纪录片,DIY定制耳机和Nintendo Papercraft
  20. 【解析】TensorBoard 可视化

热门文章

  1. git 撤销未提交的修改
  2. 搭建kinect for windows开发平台
  3. 抖音数字人主播app
  4. 密码长度最小值修改为15位、16位
  5. Win10系统bhound7.sys蓝屏故障修复
  6. IIR数字低通滤波器
  7. Drupal 常用模块汇总
  8. 网盘资源本地看!阿里云盘转本地硬盘教程
  9. 惠普电脑BIOS设置图文详细介绍
  10. 实用网站、软件、App分享(计算机专业)