select t.goods_id id,g.name,g.weight,t.total from (select distinct goods_id, sum(count) over(partition by goods_id ) as total from trans) t inner join goods g on g.id=t.goods_id where g.weight<50 and t.total>20 order by id