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