2010-03-09 2 views
2

비용 및 판매 가격이 모두 포함 된 데이터베이스가 있습니다.제품에 대한 평균 가격 인상을 알아내는 데 도움이 필요합니다. 비용 및 판매 가격이 있습니다.

유사한 원가를 그룹화 할 간단한 보고서를 만들고 얼마나 많은 마크 업이 있는지 파악하고 싶습니다.

나는 이것을 사용하여 새로운 제품에 마크 업을 적용합니다. 난 단지 비용 가격을 가지고 새로운 제품을

productid, costPrice, sellingPrice 
123, 9.99, 14.99 

, 그래서 평균 판매 가격이 같은 비용으로 제품이 무엇인지 파악하고 적용 할 : 같은

그래서 내 데이터베이스 본다 그것은 신제품에 그것.

+0

같은

뭔가, 나는 비용 가격 첫 번째 그룹 제품 (조회 테이블에 합류 여기에 유용 할 수 있습니다) 것입니다. 그런 다음 각 제품 그룹별로 평균 판매 가격을 계산합니다. – PowerUser

답변

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 및 그룹을 만들 수 있습니다, 당신의 범위에서 작동합니다. 1 개 또는 2 개의 쿼리를 사용

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) 
+1

그래, 0-5, 0-10, 10-15 등과 같이 제품을 함께 그룹화 할 생각 이었지만 그렇게 할 방법이 확실하지 않았습니다. – Blankman

+1

그게 도움이 되었습니까? –

+0

훌륭한 아이디어, 그렇습니다. 시도해 보겠습니다. – Blankman

관련 문제