这道题目要求我们从商品和交易数据中筛选出符合条件的商品,我们要做的事情如下:

1. 确定总体问题

我们需要从交易数据中计算每个商品的总购买数量,并结合商品信息筛选出购买数量超过20且质量小于50的商品,并按商品ID升序排序。

2. 分析关键问题

  • 连接表:将goodstrans表连接起来,以便获取每个商品的交易信息。
  • 计算总购买数量:对每个商品的购买数量进行汇总。
  • 筛选符合条件的商品:筛选出购买数量超过20且质量小于50的商品。
  • 排序输出:按商品ID升序排序。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们使用JOINgoodstrans表连接起来:

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;