각 지점에서 차량 한 대가 평균 얼마에 팔렸는지 보여 줍니다. 매출 합계 ÷ 판매 대수로 계산합니다.
예를 들어 200만 원 차량 1대와 400만 원 차량 3대를 팔았다면 매출은 1,400만 원, 판매 대수는 4대입니다. 대당 평균 가격은 350만 원입니다.
가격 두 개만 더해 나눈 단순 평균은 300만 원입니다. 이 데모는 400만 원 차량이 세 대 팔린 것을 반영합니다. 이것을 가중 평균이라고 합니다.
registerCustomAggregator()로 이 계산을 등록하고, 등록한 id를 값 필드의 operation에 지정합니다. PRICE는 한 대 가격, COUNT는 판매 대수, TOTAL은 매출액입니다.
AUIPivot.registerCustomAggregator(myPivotID, {
id: "WEIGHTED_AVG",
version: 1,
labelText: "가중 평균 가격",
// weightField에는 판매 대수가 들어 있는 필드 이름을 전달합니다.
validateOptions: function (options, context) {
context.requireField(options.weightField);
},
create: function () {
// 지점마다 가격에 판매 대수를 곱한 합계와 판매 대수 합계를 따로 모읍니다.
return { weightedSum: 0, weightSum: 0 };
},
accumulate: function (state, value, context) {
// value는 한 대 가격(PRICE), quantity는 같은 기록의 판매 대수(COUNT)입니다.
const quantity = context.getValue(context.options.weightField);
// 가격을 확인할 수 있고 판매 대수가 양수인 기록만 계산합니다.
// 기존 계산처럼 0원과 음수 가격도 그대로 반영합니다.
if (typeof value !== "number" || !Number.isFinite(value) ||
typeof quantity !== "number" || !Number.isFinite(quantity) || quantity <= 0) return;
// 400만 원 차량 3대를 팔았다면 매출 1,200만 원과 판매 3대를 더합니다.
state.weightedSum += value * quantity;
state.weightSum += quantity;
},
merge: function (target, source) {
// 소계와 총계에서도 두 합계를 합칩니다. 지점별 평균을 다시 평균내지 않습니다.
target.weightedSum += source.weightedSum;
target.weightSum += source.weightSum;
},
finalize: function (state) {
// 가격 × 판매 대수의 합계 ÷ 전체 판매 대수. 판매 대수가 없으면 빈칸입니다.
return state.weightSum === 0 ? null : state.weightedSum / state.weightSum;
}
});
AUIPivot.setValueFields(myPivotID, [
// 1. 매출액을 모두 더합니다. 자동차 원본의 TOTAL은 PRICE × COUNT입니다.
{ dataField: "TOTAL", operation: "SUM", customLabelText: "매출 합계" },
// 2. 판매기록 수가 아닌 실제 판매 대수를 더합니다. 한 기록이 3대이면 3을 더합니다.
{ dataField: "COUNT", operation: "SUM", customLabelText: "판매 대수" },
// 3. 등록한 계산에 가격과 판매 대수를 전달하여 대당 평균 가격을 구합니다.
{
dataField: "PRICE",
operation: "WEIGHTED_AVG",
aggregatorOptions: { weightField: "COUNT" },
customLabelText: "대당 평균 가격",
formatString: "#,##0.00"
}
]);
소계와 총계에서도 매출과 판매 대수를 각각 합친 뒤 나눕니다. 지점별 평균 가격을 다시 평균내지 않습니다.
함께 보기: 중복 고객을 고려한 고객당 평균 매출, 기준 가격 이상 차량의 판매 비중
자동차 판매 자료를 불러오는 중입니다.