我的问题如下:
- 我需要检查一个选择的值(平均值)是否为空
- 如果是,请运行选择以查找不同时期(日期)中的第一个非空值。
- 在此之后,执行一个操作来检查(日期 - 范围)是什么时间段,这是
- 之后做平均
人类语言
我想得到所有产品的平均成本,按期间分组。
如果在特定期间,产品没有发票,我需要获取上一期间的平均值(如果有平均成本)。
期间不是几个月,它们由客户定义,可以重叠 2 个月,例如:
2012-01-01 - 2012-01-29
2012-01-30 - 2012-02-27
我怎样才能在一个查询中做到这一点?
查询或多或少如下(average
是我要比较值的列):
select
p.id
,(select
avg(cost)
from
invoices i
where
i.product_id = p.id
and i.add_date between $start_date
and $end_date
) as average
from
products p;
表/数据/查询
看到这个要点(它不是原始数据库,我现在做这个测试): https ://gist.github.com/4520123