我的表中有这些列
Person Agent Unit BSP Discount
578 0 000023 32689525 0.1
578 1 000025 17589656 1
579 0 000021 32689525 0.1
579 0 000020 17589656 1
581 0 000022 32689525 0.1
583 0 000024 17589656 1
578 11 000023q 32689525 0
578 12 000025a 17589656 0
实际上我必须计算Person
的奖励。比如578以上的情况说。因为它预订了4个单位,其中3个与经纪人,1个是个人。
所以从经纪人那里他的激励将是每单位2500 INR,即3 * 2500 = 7500。
现在是折扣部分。请参阅以下几点:
条件:
如果没有给予折扣,则将1%的BSP分配给销售人员的奖励。
如果预订的折扣介于.1%至1%之间,则.75%的BSP将分配给销售人员的奖励。
如果预订的折扣介于1.1%至2%之间,则.50%的BSP将分配给销售人员的奖励。
如果预订的折扣介于2%和以上之间,则为.25% BSP将分配给销售人员的奖励。
在上表中,我们清楚地知道578已经预订了4个单位,其中两个有折扣,两个没有折扣。
所以他的奖励计算方法如下:
var incentive = total_no_of_units_booked_with_agent * 2500;
// since there might be a possibility that more than one units can be
// booked by a sales person.No we have to find if there is any discount
// applied there, if its there, then extract the incentive for each unit
//and total it using the above condition. For table shown we have
//since it has 4 records
incentive = incentive + (.75% of BSP)+ (.75%of BSP)+(1% of BSP)+(1%of BSP)
答案 0 :(得分:3)
对于条件和,只需在其中使用带有CASE语句的SUM来强制执行条件。
SELECT
person,
SUM(CASE WHEN discount = 0.00 THEN 0.0100 * bsp
WHEN discount <= 0.01 THEN 0.0075 * bsp
WHEN discount <= 0.02 THEN 0.0050 * bsp
ELSE 0.0025 * bsp END
+
CASE WHEN agent <> 0 THEN 2500.0
ELSE 0.0 END) AS incentive
FROM
yourTable
GROUP BY
person