GBase社区“技术兑礼”通道已开启 双十一当天75折!
GBase社区管理员还在苦于缺少SQL实战机会?还在为双十一不知道该买什么而纠结?别等了!GBase数据库社区双十一专属活动正式上线,写SQL赢吉币、兑好礼,技术越牛,福利越多,手把手教你 “用代码换实惠”!
一、活动规则与奖励速览
1. 答题时间
11月3日-11月14日(活动期间任意时间参与均可)
2. SQL 题目(共3档,任你挑战)题目涵盖商品统计、销售分析、用户行为分析三大方向,数据模型与测试数据请参考文末。
- 容易题(适合SQL新手):
统计降价金额>100元的商品品牌,结果集需包含品牌、原价、双11折扣价。
- 中等题(适合有基础者):
分析2025年双11期间(1 ~ 11日)各品类的销售表现,统计各品类的总销售额、总销量、订单数,筛选出总销售额TOP 10的品类,且仅包含 “已支付” 订单数据。结果集需包含品类ID、品类名称、总销售额、总销量、订单数。
- 困难题(适合资深工程师):
分析2025年双11期间不同用户等级的支付转化率与客单价,按用户等级(新用户 / 普通用户 / VIP 用户)统计下单用户数、支付用户数、支付转化率、平均客单价,仅统计订单金额≥100元的订单。结果集需包含用户等级、用户等级名称、下单用户数、支付用户数、支付转化率、平均客单价。
3. 提交要求
✅ 任选一款数据库产品,独立完成SQL后,将「完整代码 + 运行结果截图」发布至评论区
✅ 我们特别鼓励使用GBase数据库的任意一款产品进行SQL编写哦!
积分到账:
社区管理员将在1个工作日内完成审核,通过后实时发放吉币奖励:
- 容易题:100 吉币
- 中等题:300 吉币
- 困难题:500 吉币
如未及时收到吉币,请将「社区昵称 + 手机号 + 评论区截图」发送至邮箱partner@gbase.cn咨询。
二、双十一专属福利:积分兑礼全场七五折
双十一当天(11.11),积分商城所有商品75折!
不用凑满减,不用拼手速,积分足够就能兑换。
技术党的专属福利,没有复杂的套路。
三、活动注意事项
✅ 每道题目仅能获得一次吉币奖励,可多题参与,奖励不重复。
✅ 禁止抄袭代码、伪造截图,一经发现将取消参与资格。
✅ 吉币到账后,可直接前往积分商城兑换心仪好礼。
四、数据模型设计、测试数据(供参考)
数据模型包含5张核心业务表,覆盖从用户浏览到最终支付的完整转化路径,表结构如下:
表名 | 核心字段 | 表作用 |
user (用户表) | user_id(用户 ID,主键)、user_level(用户等级)、register_time(注册时间) | 存储用户基础信息,用于按用户等级分析消费能力 |
product (商品表) | product_id(商品 ID,主键)、category_id(品类 ID)、brand(品牌)、original_price(原价)、discount_price(双 11 折扣价) | 存储商品信息,用于按品类 / 品牌分析销售表现 |
order (订单表) | order_id(订单 ID,主键)、user_id(用户 ID,外键)、order_time(下单时间)、total_amount(订单总金额)、order_status(订单状态:1 - 待支付 / 2 - 已支付 / 3 - 已取消) | 存储订单核心数据,是关联用户与商品的核心表 |
| order_item(订单项表) | item_id(订单项 ID,主键)、order_id(订单 ID,外键)、product_id(商品 ID,外键)、buy_num(购买数量)、item_amount(订单项金额) | 存储订单中每个商品的明细,解决“一个订单多商品” 的关联问题 |
payment (支付表) | payment_id(支付 ID,主键)、order_id(订单 ID,外键)、pay_time(支付时间)、pay_amount(支付金额)、pay_method(支付方式:1 - 支付宝 / 2 - 微信 / 3 - 银行卡) | 存储支付信息,用于分析支付转化率和支付方式分布 |
测试数据附件链接:
评论



业务需求:分析2025年双11期间不同用户等级的支付转化率与客单价,按用户等级(新用户 / 普通用户 / VIP 用户)统计下单用户数、支付用户数、支付转化率、平均客单价,仅统计订单金额≥100元的订单。结果集需包含用户等级、用户等级名称、下单用户数、支付用户数、支付转化率、平均客单价。
给的数据有问题吧,,大概看了下,2025双11一共就几笔订单,,,top 10的品牌,,,都没有10个。。。。。









--SELECT * FROM product;
--SELECT * FROM "order";
--SELECT * FROM order_item;
--SELECT * FROM payment;
--1. 【容易】统计降价金额>100元的商品品牌,结果集需包含品牌、原价、双11折扣价。
SELECT
brand 品牌
,original_price 原价
,discount_price 双11折扣价
FROM product
WHERE (original_price - discount_price) > 100
ORDER BY 1,2,3;
--54条
--2. 【中等】业务需求:分析2025年双11期间(1 ~ 11日)各品类的销售表现,
--统计各品类的总销售额、总销量、订单数,筛选出总销售额TOP 10的品类,且仅包含 “已支付” --订单数据。结果集需包含品类ID、品类名称、总销售额、总销量、订单数。
SELECT
P.category_id 品类ID
,P.category_name 品类名称
,SUM(O.total_amount) 总销售额
,SUM(OI.buy_num) 总销量
,COUNT(DISTINCT O.order_id) 订单数
FROM "order" O
JOIN order_item OI ON O.order_id = OI.order_id
JOIN product P ON OI.product_id = P.product_id
WHERE O.order_status = 2
AND O.order_time BETWEEN CAST('2025-11-01' AS DATE) AND CAST('2025-11-12' AS DATE)
GROUP BY P.category_id,P.category_name
ORDER BY SUM(OI.buy_num) DESC
LIMIT 10;
--3. 【困难】业务需求:分析2025年双11期间不同用户等级的支付转化率与客单价,
--按用户等级(新用户 / 普通用户 / VIP用户)
--统计下单用户数、支付用户数、支付转化率、平均客单价,仅统计订单金额≥100元的订单。
--结果集需包含用户等级、用户等级名称、下单用户数、支付用户数、支付转化率、平均客单价。
WITH T1 AS (
SELECT
o.user_id
,o.order_id
,o.total_amount
,o.order_status
,u.user_level
FROM "order" o
JOIN "user" u ON o.user_id = u.user_id
WHERE o.order_time BETWEEN CAST('2025-11-01' AS DATE) AND CAST('2025-11-12' AS DATE)
AND o.total_amount >= 100
),
T2 AS (
SELECT
T1.user_id
,T1.user_level
,T1.order_id
,T1.total_amount
,CASE WHEN p.payment_id IS NOT NULL THEN 1 ELSE 0 END AS is_paid
FROM T1
LEFT JOIN payment p ON T1.order_id = p.order_id
)
SELECT
user_level 用户等级
,CASE WHEN user_level = 0 THEN '新用户'
WHEN user_level = 1 THEN '普通用户'
WHEN user_level = 2 THEN 'VIP用户'
END 用户等级名称
,COUNT(DISTINCT user_id) AS 下单用户数
,SUM(is_paid) 支付用户数
,ROUND((SUM(is_paid) / COUNT(DISTINCT user_id)) * 100, 2)||'%' 支付转化率
,ROUND(AVG(CASE WHEN is_paid = 1 THEN total_amount ELSE 0 END), 2) 平均客单价
FROM T2
GROUP BY user_level
ORDER BY user_level;



SELECT brand 品牌, original_price 原价, discount_price 双11折扣价
FROM product
WHERE (original_price - discount_price) > 100
ORDER BY 1, 2, 3;
2. 中等题SQL
SELECT P.category_id 品类ID,
P.category_name 品类名称,
SUM(O.total_amount) 总销售额,
SUM(OI.buy_num) 总销量,
COUNT(DISTINCT O.order_id) 订单数
FROM "order" O
JOIN order_item OI
ON O.order_id = OI.order_id
JOIN product P
ON OI.product_id = P.product_id
WHERE O.order_status = 2
AND O.order_time BETWEEN CAST('2025-11-01' AS DATE) AND
CAST('2025-11-12' AS DATE)
GROUP BY P.category_id, P.category_name
ORDER BY SUM(OI.buy_num) DESC LIMIT 10;
3. 困难题SQL
SELECT o.user_id, o.order_id, o.total_amount, o.order_status, u.user_level
FROM "order" o
JOIN "user" u
ON o.user_id = u.user_id
WHERE o.order_time BETWEEN CAST('2025-11-01' AS DATE) AND
CAST('2025-11-12' AS DATE)
AND o.total_amount >= 100),
T2 AS
(SELECT T1.user_id,
T1.user_level,
T1.order_id,
T1.total_amount,
CASE
WHEN p.payment_id IS NOT NULL THEN
1
ELSE
0
END AS is_paid
FROM T1
LEFT JOIN payment p
ON T1.order_id = p.order_id)
SELECT user_level 用户等级,
CASE
WHEN user_level = 0 THEN
'新用户'
WHEN user_level = 1 THEN
'普通用户'
WHEN user_level = 2 THEN
'VIP用户'
END 用户等级名称,
COUNT(DISTINCT user_id) AS 下单用户数,
SUM(is_paid) 支付用户数,
ROUND((SUM(is_paid) / COUNT(DISTINCT user_id)) * 100, 2) || '%' 支付转化率,
ROUND(AVG(CASE
WHEN is_paid = 1 THEN
total_amount
ELSE
0
END),
2) 平均客单价
FROM T2
GROUP BY user_level
ORDER BY user_level;

























热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526



