【发布时间】:2021-10-07 02:16:36
【问题描述】:
我有一个带有两个表的 SQLite 数据库:
用户
| userID | field1 | field2 | field3 | field4 |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 |
购买
| purchaseID | userID | price | timestamp |
|---|---|---|---|
| 1 | 2 | 70 | 5166323 |
| 2 | 1 | 30 | 6543654 |
| 3 | 1 | 100 | 5456434 |
| 4 | 2 | 30 | 5846541 |
| 5 | 2 | 40 | 9635322 |
| 6 | 1 | 50 | 2541541 |
我想写一个返回表的 SQL 查询
| userID | field1 | field2 | field3 | field4 | avgPrice |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | |||||
| 3 |
其中 avgPrice 对应于用户 n 最后一次购买的平均价格。
我设法编写了以下查询,它计算每个用户购买的平均价格:
SELECT
users.userID,
users.field1,
users.field2,
users.field3,
users.field4,
avg(purchases.price)
FROM purchases
JOIN users on users.userID = purchases.userID
GROUP BY purchases.userID
但我想不出任何有效的方法来计算过去 n 次购买的平均值。 (我能找到的唯一方法涉及内部查询并且效率非常低)。
感谢您帮助解决此问题。 (仅供参考,这里的表格是我实际使用的表格的简化版本)。
【问题讨论】:
-
field1、field2、...的列是什么?他们和你的要求有关系吗?
-
为什么您没有提供任何字段列的示例数据,您甚至需要它们来说明您的问题吗?可能只需要您的 Purchases 表。请提供实际所需的结果,请参阅Minimal, Reproducible Example
标签: sql database sqlite average window-functions