需要帮助来计算产品的平均价格加价,我有成本和售价

时间:2010-03-09 16:53:20

标签: sql sql-server currency

我有一个包含产品的数据库,包括成本和售价。

我想创建一个简单的报告,将类似的成本计算分组,并计算出有多少标记。

然后我将使用它来在新产品上应用标记。

所以我的数据库看起来像:

productid, costPrice, sellingPrice
123, 9.99, 14.99

我的新产品只有成本价,所以我想弄清楚具有相同成本的产品的平均销售价格,并将其应用于新产品。

1 个答案:

答案 0 :(得分:1)

首先,您的标记计算为(销售/成本)。

在您的情况下 14.99 / 9.99 = 1.5005005005 ....

如果你想检查平均值,它应该是

SELECT CostPrice, AVG(SellingPrice/CostPrice)
FROM Table
GROUP BY CostPrice

除非您使用产品类别的价格范围,否则这在意义上不会有太多意义。

某些产品可能比其他产品具有更高的加价,但仍然具有相同的销售价格。您可能希望稍微改变一下。

要使用你的范围,我可能会像

那样
DECLARE @Range INT
SET @Range = 5

SELECT  CEILING(CostPrice / @Range) * @Range,
        AVG(SellingPrice / CostPrice)
FROM    @Table
GROUP BY CEILING(CostPrice / @Range)

或创建一个包含价格范围的@table,并按这些范围分组。

这样的东西
DECLARE @Table TABLE(
        CostPrice FLOAT,
        SellingPRice FLOAT
)

INSERT INTO @Table SELECT 0.99, 14.99
INSERT INTO @Table SELECT 4.99, 9.99
INSERT INTO @Table SELECT 9.99, 14.99
INSERT INTO @Table SELECT 19.99, 9.99

DECLARE @Ranges TABLE(
        StartVal FLOAT,
        EndVal FLOAT
)

INSERT INTO @Ranges SELECT 0, 5
INSERT INTO @Ranges SELECT 5, 10
INSERT INTO @Ranges SELECT 10, 15
INSERT INTO @Ranges SELECT 15, NULL

SELECT  ISNULL(r.EndVal, r.StartVal),
        AVG(t.SellingPRice / t.CostPrice)
FROM    @Ranges r LEFT JOIN
        @Table t    ON  t.CostPrice > r.StartVal AND (t.CostPrice <= r.EndVal OR r.EndVal IS NULL)
GROUP BY ISNULL(r.EndVal, r.StartVal)