【问题标题】:need help to figure out average price markup on products, I have cost and selling price需要帮助计算产品的平均价格标记,我有成本和售价
【发布时间】:2010-03-09 16:53:20
【问题描述】:

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

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

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

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

productid, costPrice, sellingPrice
123, 9.99, 14.99

我的新产品只有成本价,所以我想计算出相同成本的产品的平均售价是多少,并将其应用于新产品。

【问题讨论】:

  • 使用 1 或 2 个查询,我将首先按成本价对产品进行分组(加入查找表可能在这里有用)。然后对于每个产品分组,平均它们存在的销售价格。

标签: sql sql-server currency


【解决方案1】:

首先,您的加价计算为 (Selling/Cost)。

在你的情况下 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)

【讨论】:

  • 是的,我正在考虑将产品组合在一起,例如 0-5、0-10、10-15 等,但也不知道该怎么做。
  • 好主意,是的,会尝试一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多