Sql 检索平均成本

Sql 检索平均成本,sql,nested,average,firebird,Sql,Nested,Average,Firebird,更新:是的,结果是一条记录。我想把它放在firebird(PRODUCTS.PRODU_AVGCOST)中的“computed by”字段中。它只需要最后3次购买一个产品,并计算其平均成本 我有三张桌子,巫婆沿着相关的领域: PRODUCTS PRODU_ID PK, PRODU_AVGCOST calculated BUYINGS BUYIN_ID PK BUYING_ITENS ITEN_ID PK, ITEN_BUYING_ID FK ITEN_COST numeric 我想从ITE

更新:是的,结果是一条记录。我想把它放在firebird(PRODUCTS.PRODU_AVGCOST)中的“computed by”字段中。它只需要最后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\u cost
字段中获取最近三次购买的平均成本,在
产品
表的
PRODU\u AVGCOST
字段中使用“选择”

我在table
产品上尝试了如下操作,但没有成功

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 

假设您希望将此值用于单个产品(假设
ACTUAL\u PRODU\u 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
据我所知,您问题中的数据模型不完整(或者我看不到
产品
购买
是如何链接的),因此我将
产品id
添加到
购买


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

请注意,如果某项操作不起作用,则还应包含错误消息(在本例中,该消息可能是未知标记(语法错误),因为您的查询不遵循任何有效的SQL语法)。