以下のシナリオの計算をストアド プロシージャに記述しなければなりません。以下のコードを書きました。正しいか、または他に良い書き方があれば教えてください。
「x」値の純資産額があり、次の条件でこの「x」値のコミッションを計算する必要があります
- 総純資産は最大 £5,000 - 30%
- 合計純資産は最大 £5,000.01 から £20,000 - 35%
- 純資産総額 £20,000.01 ~ £50,000 - 40%
- 純資産総額 £50,000.01 + - 45%
例えば
NetWorth
が 100000 の場合、計算は次のようになります。
- 100000 の最初の 5000 の場合、手数料は 30% です。つまり、5000 * 0.30 = 1500 が除外されます (95000)
- 95000 の次の 20000 では、手数料は 35% です。つまり、20000 * 0.35 = 7000 が除外されます (75000)
- 75000 の次の 50000 では、手数料は 40% です。つまり、50000 * 0.40 = 20000 が除外されます (25000)
- 省略された 25000 の場合、手数料は 45%、つまり 25000 * 0.45 = 11250 です。
このすべてのコミッションの合計 = ポイント 1 + ポイント 2 + ポイント 3 + ポイント 4 = 1500 + 7000 + 20000 + 11250 = 39750
以下は、私が書いたストアドプロシージャのコードです。これを改善できるか、または別の書き方があれば教えてください。
DECLARE @NetWorth DECIMAL(18, 2)
DECLARE @InterMediateTier1Value DECIMAL(18, 2)
DECLARE @InterMediateTier2Value DECIMAL(18, 2)
DECLARE @InterMediateTier3Value DECIMAL(18, 2)
DECLARE @InterMediateTier1Commission DECIMAL(18, 2)
DECLARE @InterMediateTier2Commission DECIMAL(18, 2)
DECLARE @InterMediateTier3Commission DECIMAL(18, 2)
DECLARE @RemainderCommission DECIMAL(18, 2)
DECLARE @RemainderValue DECIMAL(18, 2)
SET @NetWorth = 40000
DECLARE @TotalCommission DECIMAL(18, 2)
IF @NetWorth <= 5000
BEGIN
SET @InterMediateTier1Commission = @NetWorth * 0.30
SET @TotalCommission = @InterMediateTier1Commission
END
ELSE IF @NetWorth > 5000
AND @NetWorth <= 20000
BEGIN
SET @InterMediateTier2Value = @NetWorth - 5000
SET @InterMediateTier1Commission = 5000 * 0.30
SET @InterMediateTier2Commission = @InterMediateTier2Value * 0.35
SET @TotalCommission = @InterMediateTier1Commission
+ @InterMediateTier2Commission
END
ELSE IF @NetWorth > 20000
AND @NetWorth <= 50000
BEGIN
SET @InterMediateTier1Value = @NetWorth - 5000
SET @InterMediateTier1Commission = 5000 * 0.30
IF @InterMediateTier1Value > 20000
SET @RemainderValue = @InterMediateTier1Value - 20000
SET @RemainderCommission = @RemainderValue * 0.40
SET @InterMediateTier2Commission = 20000 * 0.35
SET @TotalCommission = @InterMediateTier1Commission
+ @InterMediateTier2Commission
+ @RemainderCommission
END
ELSE IF @NetWorth > 50000
BEGIN
SET @InterMediateTier1Value = @NetWorth - 5000
SET @InterMediateTier1Commission = 5000 * 0.30
IF @InterMediateTier1Value > 20000
SET @RemainderValue = @InterMediateTier1Value - 20000
SET @InterMediateTier2Commission = 20000 * 0.35
IF @RemainderValue > 50000
SET @InterMediateTier4Value = @RemainderValue - 50000
SET @InterMediateTier3Commission = 50000 * 0.40
SET @RemainderCommission = @RemainderValue * 0.45
SET @TotalCommission = @InterMediateTier1Commission
+ @InterMediateTier2Commission
+ @InterMediateTier3Commission
+ @RemainderCommission
END
SELECT @TotalCommission AS TotalCommission