我有3个mysql
表看起来像这样:
- product(product_id, product_name)
- order(order_id, order_date)
- order_detail(order_detail_id, product_id, order_id, quantity)
我想获取最近三个月计算出的每月平均售出产品数量并将其按产品分组
我要选择所有产品(最近三个月是否出售)。
product_name | avg_quantity_sold_per_month
--------------|-----------------------------
product_1 | 50
product_2 | 0
product_3 | 78
我试过这个查询:
select
p.product_name
, sum(od.quantity)/3 as avg_quantity_sold_per_month
from order o
inner join order_detail od on o.order_id = od.order_id
inner join product p on od.product_id = p.product_id
where
o.order_date >= now()-interval 3 month
group by p.product_id
但是它只显示最近一个月出售的产品,我想选择所有产品。
最佳答案
使用left join
:
select p.product_name,
sum(od.quantity) / 3 as avg_quantity_sold_per_month
from product p
left join order_detail od on od.product_id = p.product_id
left join orders o on o.order_id = od.order_id
and o.order_date >= now() - interval 3 month
group by p.product_id
另外,请尽量不要使用诸如
order
之类的保留关键字作为标识符。关于mysql - 选择最近3个月每月的平均销售量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43028848/