这道题目要求我们从商品和交易数据中筛选出符合条件的商品,我们要做的事情如下:
1. 确定总体问题
我们需要从交易数据中计算每个商品的总购买数量,并结合商品信息筛选出购买数量超过20且质量小于50的商品,并按商品ID升序排序。
2. 分析关键问题
- 连接表:将
goods
和trans
表连接起来,以便获取每个商品的交易信息。 - 计算总购买数量:对每个商品的购买数量进行汇总。
- 筛选符合条件的商品:筛选出购买数量超过20且质量小于50的商品。
- 排序输出:按商品ID升序排序。
3. 解决每个关键问题的代码及讲解
步骤1:连接表
我们使用JOIN
将goods
和trans
表连接起来:
from
goods g
join
trans t on g.id = t.goods_id
JOIN trans t ON g.id = t.goods_id
:通过商品ID连接两个表,以便获取每个商品的交易信息。
步骤2:计算总购买数量
我们使用SUM
函数对每个商品的购买数量进行汇总:
sum(count) as total
SUM(count) AS total
:计算每个商品的总购买数量。
步骤3:筛选符合条件的商品
我们使用HAVING
子句筛选出购买数量超过20且质量小于50的商品:
having
sum(count) > 20 and g.weight < 50
HAVING SUM(count) > 20 AND g.weight < 50
:筛选出符合条件的商品。
步骤4:排序输出
我们使用ORDER BY
按商品ID升序排序输出结果:
order by
t.goods_id asc
完整代码
select
t.goods_id as id,
g.name,
g.weight,
sum(count) as total
from
goods g
join
trans t on g.id = t.goods_id
group by
t.goods_id, g.name, g.weight
having
sum(count) > 20 and g.weight < 50
order by
t.goods_id asc;