活动专区
活动公告
文章

GBase社区“技术兑礼”通道已开启 双十一当天75折!

GBase社区管理员
发表于2025-11-01 11:51:161222次浏览51个评论

还在苦于缺少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 - 银行卡)存储支付信息,用于分析支付转化率和支付方式分布

 

测试数据附件链接:

测试数据

评论

登录后才可以发表评论
用户头像
汉高祖发表于 9个月前
好啊.到时来参加活动.
GBase用户21143发表于 9个月前
mr_wolf发表于 9个月前
题目还没有?
用户头像
小鱼不吐泡泡发表于 9个月前
@mr_wolf:有了呀,不是在SQL题目那里
枫溪发表于 9个月前
好啊
steven发表于 9个月前
说明,我有2张表,user和order,和我系统里的表名冲突,我另外建了2张表gbaseuser和gbaseorder,表结构完全一样。
用户头像
郝老师发表于 9个月前
@steven:如果 order 作为表名,两边要加反引号( ` ` )
steven发表于 9个月前
@郝老师:郝老师,我用的yashandb,表名加反引号无法创建
用户头像
郝老师发表于 9个月前
@steven:抱歉,我用 8a 调试的。给分!!
冰凤发表于 9个月前
666
冰凤发表于 9个月前
必然参与
mr_wolf发表于 9个月前
业务需求:分析2025年双11期间(1 ~ 11日)各品类的销售表现,统计各品类的总销售额、总销量、订单数,筛选出总销售额TOP 10的品类,且仅包含 “已支付” 订单数据。结果集需包含品类ID、品类名称、总销售额、总销量、订单数。

业务需求:分析2025年双11期间不同用户等级的支付转化率与客单价,按用户等级(新用户 / 普通用户 / VIP 用户)统计下单用户数、支付用户数、支付转化率、平均客单价,仅统计订单金额≥100元的订单。结果集需包含用户等级、用户等级名称、下单用户数、支付用户数、支付转化率、平均客单价。


给的数据有问题吧,,大概看了下,2025双11一共就几笔订单,,,top 10的品牌,,,都没有10个。。。。。
mr_wolf发表于 9个月前
@mr_wolf:SQL 代码
mr_wolf发表于 9个月前
@mr_wolf:有坑吗,我提交的评论没显示
mr_wolf发表于 9个月前
@mr_wolf:第三题结果
mr_wolf发表于 9个月前
@mr_wolf:提交有图片的评论都没显示?我这有问题
用户头像
郝老师发表于 9个月前
@mr_wolf:已经赋予 insert 权限,你可以随便增加测试数据,不能删除
mr_wolf发表于 9个月前
@郝老师:????
mr_wolf发表于 9个月前
SQL如下(这个控件评论控件,应该做个富文本编辑的不然图片都没法加描述):
用户头像
郝老师发表于 9个月前
@mr_wolf:由于社区评论的安全性限制,不能传附件。能通过微信把你的 SQL 和对应结果整理到 word中传递给我吗?13002231730 对应的企业微信,不要选一般微信的账号
mr_wolf发表于 9个月前
@郝老师:郝军老师?已发企业微信。
删库跑路未遂发表于 9个月前
用户头像
Melony.发表于 9个月前
--SELECT * FROM "user";
--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;

枫溪发表于 9个月前
感觉有点压力啊
枫溪发表于 9个月前
1. 容易题SQL
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;
用户头像
汉高祖发表于 8个月前
测试下.
GBase用户20926发表于 8个月前
终于搞定,代码和三道题的截图如下
冰凤发表于 8个月前
路过
冰凤发表于 8个月前
参与一下
枫溪发表于 8个月前
路过
发表于 8个月前
用户头像
郝老师发表于 8个月前
@李:请再优化下,如果平均客单价 NULL,则赋值为 0
用户头像
柒柒天晴发表于 8个月前
这活动刺激啊
GBase用户31099发表于 8个月前
用户头像
郝老师发表于 8个月前
@GBase用户31099:满分!
GBase用户31099发表于 8个月前
我来了
GBase用户31099发表于 8个月前
非常好的活动
GBase用户31099发表于 8个月前
赞赞赞
用户头像
锁钥发表于 8个月前
没看明白
GBase用户31041发表于 8个月前
用户头像
郝老师发表于 8个月前
@GBase用户31041:三个结果集都是第一题。请把第二、三题结果粘贴下
GBase用户31041发表于 8个月前
@GBase用户31041:第二题,第三题结果
用户头像
郝老师发表于 8个月前
@GBase用户31041:满分!
GBase用户21143发表于 8个月前
努力吧,暂时不够兑换。
用户头像
GBase用户28017发表于 8个月前
整个数据,连自己家的几个产品都不能兼容(比如SQL语句不支持GBase8s),而百度上一查GBase8s都说是基于PostgreSQL开发的(其实是Informix),玩个球啊。
用户头像
小鱼不吐泡泡发表于 8个月前
@GBase用户28017:正常,强如那些大厂,华为,腾讯的,不也是都各种数据库版本,有基于mysql的,有基于pg的
Dale发表于 8个月前
活动能延长?
崔哥发表于 8个月前
洞庭之东江水西,帘旌不动夕阳迟。登临吴蜀横分地,徙倚湖山欲暮时。万里来游还望远,三年多难更凭危。白头吊古风霜里,老木沧波无限悲。天入平湖晴不风,夕帆和雁正浮空。楼头客子杪秋后,日落君山元气中。北望可堪回白首,南游聊得看丹枫。翰林物色分留少,诗到巴陵还未工。
用户头像
levvel发表于 7个月前
评论是对发帖人的一种尊重
用户头像
levvel发表于 3个月前
太有深度了!