获取每个品类中销量最高的商品

该博客介绍了如何使用SQL语句从商品表和销量表中查询每个品类销量最高的商品。首先,通过LEFT JOIN将两个表连接,并按商品编号分组计算总销量。然后,对结果进行分组并应用MAX函数找出每个品类的最高销量商品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目描述:

给定商品表和销量表,编写sql语句查询每个品类中销量最高的商品。

二、表结构:

1、商品表结构:

1 CREATE TABLE `sku_info` (
2   `sku_no` int NOT NULL AUTO_INCREMENT COMMENT '商品编号',
3   `sku_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品名称',
4   `category` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '品类',
5   PRIMARY KEY (`sku_no`)
6 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2、销量表结构:

1 CREATE TABLE `sales` (
2   `id` int NOT NULL AUTO_INCREMENT COMMENT '销量编号',
3   `sku_no` int NOT NULL COMMENT '商品编号',
4   `qty` int NOT NULL COMMENT '销量',
5   `order_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单日期',
6   PRIMARY KEY (`id`)
7 ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

三、插入表数据

插入商品信息 :

INSERT INTO 
	`sku_info` 
VALUES 
	('1', 'sku1', 'cat1'), 
	('2', 'sku2', 'cat2'), 
	('3', 'sku3', 'cat1');

插入销量信息:

INSERT INTO 
	`sales` 
VALUES 
	('1', '1', '3', '2021-08-25 21:42:38'), 
	('2', '2', '2', '2021-08-25 21:42:43'), 
	('3', '3', '2', '2021-08-25 21:42:49'),
    ('4', '3', '2', '2021-08-25 21:42:52');

四、具体思路

题目描述:

给定商品表和销量表,编写sql语句查询每个品类中销量最高的商品。

注意:

销量表中有可能有存在多个相同的商品销量信息。

1、将sku_info表和sales表用关键字LEFT JOIN连接,按商品编号分组并对其销量进行求和。

1 select 
2     s.sku_name 商品名,s.category 品类,SUM(qty) 销量 
3 from  
4     sku_info s LEFT JOIN sales v on s.sku_no = v.sku_no 
5 GROUP BY v.sku_no
6 ORDER BY 销量 desc

执行结果:

img

2、将执行的结果当作临时表进行分组,然后对销量字段进行max函数操作

SELECT 
	商品名,品类,max(销量) 销量 
from (
	select 
		s.sku_name 商品名,s.category 品类,SUM(qty) 销量 
	from  
		sku_info s LEFT JOIN sales v on s.sku_no = v.sku_no 
	GROUP BY v.sku_no ORDER BY 销量 desc
) as temp_table GROUP BY 品类

执行结果:

img

对于唯品会美妆品类商品销售情况进行分析,你需要首先获取到相关数据,这可能涉及到网络爬虫(如果你的数据不在公开API里),然后处理和清洗数据,最后进行可视化和统计分析。这里提供一个简化的Python代码框架作为参考: ```python import pandas as pd import requests from bs4 import BeautifulSoup import matplotlib.pyplot as plt # 网络爬虫(假设我们从网页抓取数据) def fetch_data(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 抓取所需信息,比如商品名称、价格、销量等 data = ... # 根据实际网页结构提取数据 return data # 数据预处理 def preprocess_data(data): df = pd.DataFrame(data) # 将数据转换为DataFrame df['日期'] = pd.to_datetime(df['日期']) # 如果有日期字段,转换为日期格式 df = df.dropna() # 删除缺失值 return df # 销售量分析 def sales_analysis(df): monthly_sales = df.groupby(df['日期'].dt.month)['销售额'].sum() monthly_sales.plot(kind='bar', title='每月美妆商品销售额') plt.xlabel('月份') plt.ylabel('销售额') plt.show() # 主函数 def main(): url = "https://your-vendor.com/makeup-sales" # 替换为你实际的URL raw_data = fetch_data(url) processed_df = preprocess_data(raw_data) sales_analysis(processed_df) # 运行分析 if __name__ == "__main__": main() ``` 请注意,这个示例代码仅作演示,实际过程中需要根据唯品会美妆商品销售页面的具体结构和数据格式进行调整。此外,如果数据量大或需要频繁访问网站,你可能需要考虑使用更专业的网络库,如Scrapy,并遵守网站的robots.txt规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值