我有一个与聚合函数相关的问题。
目前,我想基于2个表做一些平均值。第一个表是标准表,它包括每个方案的标准。第二个表是数据表,它包括需要用于平均值的所有记录。
以下是2个表格的结构。
表1:类别
CREATE TABLE Sales
(
SaleDate date,
SalerZip varchar(255),
ProductID integer,
AveragePrice integer
);
Create table details
(
ListSaleDate date,
SalerZip varchar(255),
buyerDistance integer,
price integer,
ProductID integer
);
注意,这是拍卖价格,因此,同一产品可以以不同的价格出售。
要求如下。对于表类别(A)中的每个记录,我们需要在表格详细信息(B)中搜索符合以下条件的一堆记录
因此,对于表A中的每条记录,我们可以从表B中找到一组记录,表B中这组记录的平均价格将保存到表A列AveragePrice中。
答案 0 :(得分:0)
您不应将结果存储在Sales
表中的字段中,否则每次细节更改时都需要重新计算结果。您应该为此创建一个视图:
CREATE VIEW SalesView
AS
SELECT
SaleDate date,
SalerZip varchar(255),
A.ProductID,
AVG(B.Price) AveragePrice
FROM Sales A
INNER JOIN Details B
ON DATEDIFF(Day,A.SaleDate, -30) <= B.ListSaleDate
AND B.ListSaleDate < A.SaleDate
AND A.ProductID = B.ProductID
AND A.SalerZip = B.SalerZip and B.buyerDistance < 200
GROUP BY A.SaleDate,
A.SalerZip,
A.ProductID