with temp_member_goods as (
select
distinct s.bill_no bill_no, concat(ss.goods_id, '-', ss.color_id) as ss_gc_id
from rbp.rbp_sales_order_bill s final
left join rbp.rbp_sales_order_bill_goods sg on s.id = sg.bill_id
left join rbp.rbp_sales_order_bill_size ss on s.id = ss.bill_id and sg.id = ss.bill_goods_id
where s.bill_no in (select
s.bill_no
from rbp.rbp_sales_order_bill s final
left join rbp.rbp_sales_order_bill_goods sg on s.id = sg.bill_id
left join rbp.rbp_sales_order_bill_size ss on s.id = ss.bill_id and sg.id = ss.bill_goods_id 
left join rbp.rbp_goods g on ss.goods_id = g.id
left join rbp.rbp_color cl on ss.color_id = cl.id
where g.code = 'g_code_holder' and cl.`code` = 'cl_code_holder' and sg.type = 0  and sg.sales_discount > 0.5 and s.bill_date >= 'date_start_holder' and s.bill_date < 'date_end_holder')
and s.bill_date >= 'date_start_holder' and s.bill_date < 'date_end_holder' and sg.type = 0  and sg.sales_discount > 0.5 
and (ss.goods_id != goods_id_holder OR ss.color_id != color_id_holder) 
) 
SELECT 
    ss_gc_id,COUNT(*) AS combination_count
FROM temp_member_goods 
group by ss_gc_id ORDER by combination_count desc limit 0, 20;