本题我的思路是先将交易表中的商品按类别进行分类求和得出各类商品的总购买次数,并将商品id与总购买次数筛选出来生成一张新表,再将此表与商品表进行left join 连接,之后再按要求筛选即可。

select a.goods_id,g.name,g.weight,a.s from
(select goods_id,sum(`count`) s from trans group by goods_id) a
left join goods g on a.goods_id = g.id
where a.s > 20 and g.weight < 50
order by a.goods_id