我有两张桌子,一张包含产品,一张购买。我试图找到每种产品最近 3 次购买价格的平均值。因此,在下面的示例中,对于产品“bean”,我希望返回产品时间 1230854663 之前最后 3 个购买价格的平均值,即客户 C、D、E 的平均值(239)
产品
+-------+------------+
| Name | time |
+-------+------------+
| beans | 1230854764 |
+-------+------------+
购买
+----------+------------+-------+
| Customer | time | price |
+----------+------------+-------+
| B | 1230854661 | 207 |
| C | 1230854662 | 444 |
| D | 1230854663 | 66 |
| E | 1230854764 | 88 |
| A | 1230854660 | 155 |
+----------+------------+-------+
我想出了一个嵌套的选择查询,它几乎可以让我到达那里,即如果我对时间进行硬编码,它就可以工作:
SELECT products.name,(SELECT avg(temp.price) FROM (select purchases.price from purchases WHERE purchases.time < 1230854764 order by purchases.time desc limit 3) temp) as av_price
from products products
但是,如果查询引用 product.time 而不是像下面这样的硬编码时间,我会收到一个错误,即列 products.time 不存在。
SELECT products.name,(SELECT avg(temp.price) FROM (select purchases.price from purchases WHERE purchases.time < products.time order by purchases.time desc limit 3) temp) as av_price from products products
我不确定我是否在嵌套查询中犯了一个简单的错误,或者我正在以完全错误的方式解决这个问题,应该使用连接或其他构造,无论哪种方式我都被卡住了。任何帮助都会受到极大的欢迎。