我有以下表格
折扣订单
id | employee |
---|----------|
1 |1 |
2 |2 |
3 |1 |
4 |3 |
5 |3 |
6 |1 |
7 |1 |
8 |1 |
9 |1 |
其他地方我有员工薪水。
我想做的是以下内容。
如果员工存在于折扣订单表中,请执行以下操作:
- > "折扣订单表中的第1行"从工资值中扣除30%并在"表X"上插入1行。使用employee_id和折扣价值。
- > "折扣订单表中的2行"从工资值中扣除30%,并在"表X"上插入2行。使用employee_id和折扣价值。
- > "折扣订单表中的3行"从工资值中扣除30%,并在"表X"上插入3行。使用employee_id和折扣价值。
- > "折扣订单表中的4行"从工资值中扣除30%,并在"表X"上插入3行。使用employee_id和折扣价值(3倍30%占薪水的90%)第4行插入行应为10%(达到工资的100%)
- > >"折扣订单表中的4行"为上述案例制定流程并忽略其余部分。 (因为你的折扣不能超过工资的100%)
如果员工#1在"折扣订单表"中获得1000美元并且有10行。 X表应该看起来像这样
id | employee | discount_value | discounts_orders_id
---|----------|----------------|--------------------
1 | 1 | 300 | 1
2 | 1 | 300 | 3
3 | 1 | 300 | 6
4 | 1 | 100 | 7
已编辑:
我找到了一个时间解决方案。
insert into "table x" ....
select (employee_salary * 0.30) from employee
inner join discounts_orders ....
limit 4
我插入4行(薪水* 0.30)然后我用(薪水* 0.10)更新1行
答案 0 :(得分:0)
我会尝试使用子查询计算条目数量,然后使用CASE WHEN决定该因子:
insert into "table x" ....
select (employee_salary *
(CASE WHEN (SELECT COUNT(*) FROM discounts_orders as dior
WHERE dior.employee=employee.id
AND dior.id<=discounts_orders.id) < 4
THEN 0.30
ELSE 0.10
END)) from employee
inner join discounts_orders ....
limit 4