我正在考虑什么是创建此查询的最佳方法
您的日期算术有点差。我认为这就是您想要的:
select year(s.created_at) as yyyy,
month(s.created_at) as mm,
s.Currency as currency,
sum(se.discount) as discount
from sales s left join
sales_entries se
on s.sales_id = se.sale_id
where s.created_at < '2017-01-01' or
s.created_at >= '2018-01-01'
group by year(s.created_at), month(s.created_at),
s.currency
order by year(s.created_at), month(s.created_at), s.currency;
注意,我还将表别名替换为有意义的缩写,而不是任意字母。