更新:是的,结果是单个记录。我想把它放在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
答案 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
据我所知,您的问题中的数据模型不完整(或者我没有看到products
和buying_itens
的关联方式),所以我已经'添加'produ_id
到buying_itens
。
如果您想在单个查询中对所有产品执行此操作,事情会变得更复杂。