SELECT YEAR(sales_date) AS YEAR
,MONTH(sales_date) AS MONTH
,GENDER, COUNT(DISTINCT O.user_id) AS USERS
FROM online_sale O join user_info F ON O.user_id = F.user_id
WHERE gender IS NOT NULL
GROUP BY YEAR(sales_date),MONTH(sales_date),GENDER
ORDER BY YEAR(sales_date),MONTH(sales_date),GENDER