我有一个包含产品的数据库,包括成本和售价。
我想创建一个简单的报告,将类似的成本计算分组,并计算出有多少标记。
然后我将使用它来在新产品上应用标记。
所以我的数据库看起来像:
productid, costPrice, sellingPrice
123, 9.99, 14.99
我的新产品只有成本价,所以我想弄清楚具有相同成本的产品的平均销售价格,并将其应用于新产品。
答案 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)