【发布时间】:2013-01-11 20:25:42
【问题描述】:
我的问题如下:
- 我需要检查一个选择的值(average)是否为空
- 如果是,请运行选择以查找不同时期(日期)中的第一个非空值。
- 在此之后,执行一个操作来检查(日期 - 范围)的时间段,这是
- 然后做平均
人类语言
我想要所有产品的平均成本,按期间分组。
如果在特定期间,产品没有发票,我需要获取上一期间的平均值(如果有平均成本)。
期间不是月份,它们由客户定义,可以重叠 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
【问题讨论】:
-
请写一个更能描述问题的标题。
-
现在可以了吗?在 Postgre SQL 查询中使用条件递归选择
-
请提供示例数据和预期输出。你可能认为这个问题很清楚,但大多数阅读的人不明白你想问什么。
-
@GordonLinoff 我现在编辑帖子。我认为当时的信息很好。
-
顺便说一句,当我们询问样本数据时,something like this is what we were hoping for(左侧的测试设置,而不是右侧的不可能查询):
标签: php sql database postgresql