нужна помощь, чтобы выяснить среднюю цену наценки на товары, у меня есть стоимость и цена продажи - PullRequest
2 голосов
/ 09 марта 2010

У меня есть база данных, в которой есть товары, как по себестоимости, так и по цене продажи.

Я хочу создать простой отчет, в котором будут сгруппированы аналогичные калькуляции и определен размер разметки.

Затем я буду использовать это, чтобы применить разметку к новым продуктам.

Итак, моя база данных выглядит так:

productid, costPrice, sellingPrice
123, 9.99, 14.99

У меня есть новые продукты, которые имеют только себестоимость, поэтому я хочу выяснить, какова средняя цена продажи для продуктов с той же стоимостью, и применить ее к новым продуктам.

1 Ответ

1 голос
/ 09 марта 2010

Ну, во-первых, ваша разметка рассчитывается как ( Продажа / Стоимость ).

В вашем случае 14.99 / 9.99 = 1.5005005005 ....

Если вы хотите проверить avg, это должно быть что-то вроде

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)
...