select
    o.category_id,
    round(sum(o.order_amount),2) as total_sales,
    count(case when c.customer_gender='男' then 1 else null end) as male_customers,
    count(case when c.customer_gender='女' then 1 else null end) as female_customers
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
order by
    o.category_id asc 

这题一开始我写成count(case when c.customer_gender='男' then 1 else 0 end) as male_customers出错,因为0非空,这行也会被统计

要么写成:count(case when c.customer_gender='男' then 1 else null end) as male_customers

要么写成:sum(case when c.customer_gender='男' then 1 else 0 end) as male_customers