with 
t1 as(
    select
        o.category_id,
        sum(o.order_amount) as total_sales
    from order_details o left join customer_info c
    on o.order_id=c.order_id 
    where o.order_date between '2024-01-01' and '2024-06-30'
    group by o.category_id),
t2 as(
    select
        o.category_id,
        count(c.customer_gender) as male_customers
    from order_details o left join customer_info c
    on o.order_id=c.order_id 
    where c.customer_gender='男' and o.order_date between '2024-01-01' and '2024-06-30'
    group by o.category_id),
t3 as(
    select
        o.category_id,
        count(c.customer_gender) as female_customers
    from order_details o left join customer_info c
    on o.order_id=c.order_id
    where c.customer_gender='女' and o.order_date between '2024-01-01' and '2024-06-30'
    group by o.category_id)

select
    t1.category_id,
    t1.total_sales,
    coalesce(t2.male_customers,0) as male_customers,
    coalesce(t3.female_customers,0) as female_customers
from t1
left join t2 on t1.category_id=t2.category_id
left join t3 on t1.category_id=t3.category_id
order by t1.category_id