中级练习[10]:Hive SQL

server/2024/9/24 2:10:19/

目录

1. 各品类销量前三的所有商品

1.1 题目需求

1.2 代码实现

2. 各品类中商品价格的中位数

2.1 题目需求

2.2 代码实现

3. 找出销售额连续3天超过100的商品

3.1 题目需求

3.2 代码实现


 

1. 各品类销量前三的所有商品

1.1 题目需求

从订单详情表中(order_detail)和商品表(sku_info)中查询各个品类销售数量前三的商品。如果该品类小于三个商品,则输出所有的商品销量。

Sku_id(商品id)Category_id(品类id)
21
41
11
82
72
52
123
113
103

1.2 代码实现

sql">hive>
selectt2.sku_id,t2.category_id
from(selectt1.sku_id,si.category_id,rank() over(partition by category_id order by t1.sku_sum desc) rkfrom(select sku_id,sum(sku_num) sku_sumfromorder_detailgroup bysku_id)t1joinsku_info siont1.sku_id = si.sku_id)t2
where t2.rk <= 3;

2. 各品类中商品价格的中位数

2.1 题目需求

从商品表(sku_info)中求出每个品类的价格中位数。如果是偶数则输出中间两个值的平均值,如果是奇数,则输出中间数即可。

Category_id(品类id)Medprice(中位数)
13500.0
21250.0
3510.0

2.2 代码实现

sql">hive>
-- 求每个品类价格排序后的商品数量,并标记奇偶性
selectsku_id,category_id,price,row_number() over(partition by category_id order by price desc) rk,count(*) over(partition by category_id) cn,count(*) over(partition by category_id) % 2 flag
fromsku_info t1-- 求出偶数品类的中位数
selectdistinct t1.category_id,avg(t1.price) over(partition by t1.category_id) medprice
from(selectsku_id,category_id,price,row_number() over(partition by category_id order by price desc) rk,count(*) over(partition by category_id) cn,count(*) over(partition by category_id) % 2 flagfromsku_info)t1
where t1.flag = 0 and (t1.rk = cn / 2 or t1.rk = cn / 2 + 1)-- 求出奇数品类的中位数
union allselectt1.category_id,t1.price
from(selectsku_id,category_id,price,row_number() over(partition by category_id order by price desc) rk,count(*) over(partition by category_id) cn,count(*) over(partition by category_id) % 2 flagfromsku_info)t1
where t1.flag = 1 and t1.rk = round(cn / 2)

3. 找出销售额连续3天超过100的商品

3.1 题目需求

从订单详情表(order_detail)中找出销售额连续3天超过100的商品。

Sku_id(商品id)
1
10
11
12
2
3
4
5
6
7
8
9

3.2 代码实现

sql">hive>
-- 每个商品每天的销售总额
selectsku_id,create_date,sum(price * sku_num) sku_sum
fromorder_detail
group bysku_id, create_date
having sku_sum >= 100-- 判断连续三天以上
selectdistinct t3.sku_id
from(selectt2.sku_id,count(*) over(partition by t2.sku_id, t2.date_drk) cdrkfrom(selectt1.sku_id,t1.create_date,date_sub(t1.create_date, rank() over(partition by t1.sku_id order by t1.create_date)) date_drkfrom(selectsku_id,create_date,sum(price * sku_num) sku_sumfromorder_detailgroup bysku_id, create_datehaving sku_sum >= 100)t1)t2)t3
wheret3.cdrk >= 3

http://www.ppmy.cn/server/121108.html

相关文章

极狐GitLab 重要安全版本:17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

lora 微调3B模型微调前有5G 量化f16 后最后导出模型容量变小了只有2G了,为什么?

环境&#xff1a; lora 微调 问题描述&#xff1a; lora 微调3B模型微调前有5G 量化f16 后最后导出模型容量变小了只有2G了&#xff0c;为什么&#xff1f; 解决方案&#xff1a; 在使用LoRA&#xff08;Low-Rank Adaptation&#xff09;对大语言模型&#xff08;例如一个…

Javascript可视化

从客户端WebAPI视角下解读前端学习-CSDN博客 vaScript 可视化是指利用 JavaScript 语言及其相关库&#xff0c;生成数据的图形表示形式&#xff0c;帮助用户更直观地理解和分析数据。它常用于展示图表、地图、图形动画等。JavaScript 作为前端开发的主流语言&#xff0c;结合 …

Ubuntu与Windows之间实现复制粘贴

1.卸载已有的工具 sudo apt-get autoremove open-vm-tools 2.安装工具open-vm-tools sudo apt-get install open-vm-tools 3.安装open-vm-tools-desktop sudo apt-get install open-vm-tools-desktop

基于SpringBoot的社团管理系统【附源码】

基于SpringBoot的社团管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 5.1.2 社长信…

Centos Stream 9根目录扩容

要将 sda 的剩余空间扩展给 cs-root&#xff0c;可以按照以下步骤进行操作。假设你已经有剩余的未分配空间在 sda 上。 步骤 1&#xff1a;查看当前磁盘分区情况 首先&#xff0c;确保你有未分配的空间在 sda 上。 lsblk步骤 2&#xff1a;创建新的分区 使用 fdisk 或 par…

GUI编程之MATLAB入门详解(01)

⛄前言 图形用户界面的设计是MATLAB的核心应用之一。当用户与计算机之间或用户与计算机程序之间进行交互操作时&#xff0c;舒服高效的用户接口功能则会对用户产生极大的吸引力。图形用户界面&#xff08;GUI&#xff09;则通过窗口、图标、按钮、菜单、文本等图形对象构成用户…

【FPGA开发】比特文件的压缩

压缩比特文件介绍 对于FPGA而言&#xff0c;比特文件包含了FPGA芯片的配置信息&#xff0c;也是我们一般意义上下载进FPGA的“程序”&#xff0c;压缩比特文件是一种优化FPGA配置文件大小和提高配置效率的方法&#xff0c;特别对于一些复杂的设计以及一些芯片而言&#xff0c;如…