检索平均成本

时间:2014-08-22 16:01:16

标签: sql nested average firebird

更新:是的,结果是单个记录。我想把它放在firebird(PRODUCTS.PRODU_AVGCOST)的“计算方法”字段中。它只需要对产品进行最后3次购买并计算其平均成本。

我有三张桌子,女巫跟随着这些人物:

PRODUCTS
PRODU_ID PK,
PRODU_AVGCOST calculated

BUYINGS
BUYIN_ID PK

BUYING_ITENS
ITEN_ID PK,
ITEN_BUYING_ID FK
ITEN_COST numeric

我想从ITEN_COST字段中获取前三次购买的平均费用,使用{select}作为PRODU_AVGCOST表的PRODUCTS字段

我在表PRODUCTS上尝试了以下内容,但这不起作用

select avg(iten_cost) from buying_itens b
where (select first 3 (iten_cost) from buying_itens where c.iten_id = produ_id)
order by b.iten_id desc 

1 个答案:

答案 0 :(得分:1)

假设您想要单个产品(假设ACTUAL_PRODU_ID是该值),您可以这样做:

select avg(a.iten_cost)
from (
  select first 3 iten_cost
  from buying_itens 
  where produ_id = ACTUAL_PRODU_ID
  order by iten_id desc
) a

据我所知,您的问题中的数据模型不完整(或者我没有看到productsbuying_itens的关联方式),所以我已经'添加'produ_idbuying_itens

如果您想在单个查询中对所有产品执行此操作,事情会变得更复杂。