Как получить текущую заработную плату и текущий баланс в MySQL?
У меня есть следующие записи ниже...
+----+-------+------------+
| ID | token | actual_pay |
+----+-------+------------+
| 1 | 500 | 900 |
| 2 | 400 | 900 |
| 3 | 300 | 900 |
| 4 | 600 | 900 |
| 5 | 800 | 900 |
| 6 | 700 | 900 |
| 7 | 400 | 900 |
| 8 | 450 | 900 |
| 9 | 900 | 900 |
| 10 | 800 | 900 |
| 11 | 700 | 900 |
| 12 | 800 | 850 |
+----+-------+------------+
Моя проблема в том, как получить текущую общую сумму заработной платы и текущий баланс.
Моя формула следующая:
Условные обозначения:
RTP = текущая общая заработная плата
BAL = баланс
TK = токен
PAY = Фактическая оплата
Формула:
1. Для 1-го идентификатора значение TK должно быть значением по умолчанию RTP, поэтому формула BAL будет иметь вид:
БАЛ = ОПЛАТА-ТК
2. Для 2-го и 12-го ID формула будет иметь вид:
RTP = BAL + PAY
БАЛ =RTP-TK
Таким образом, результат будет как этот...
+----+-----+-----+------+------+
| ID | TK | PAY | RTP | BAL |
+----+-----+-----+------+------+
| 1 | 500 | 900 | 500 | 400 |
| 2 | 400 | 900 | 1300 | 900 |
| 3 | 300 | 900 | 1800 | 1500 |
| 4 | 600 | 900 | 2400 | 1800 |
| 5 | 800 | 900 | 2700 | 1900 |
| 6 | 700 | 900 | 2800 | 2100 |
| 7 | 400 | 900 | 3000 | 2600 |
| 8 | 450 | 900 | 3500 | 3050 |
| 9 | 900 | 900 | 3950 | 3050 |
| 10 | 800 | 900 | 3950 | 3150 |
| 11 | 700 | 900 | 4050 | 3350 |
| 12 | 800 | 850 | 4200 | 3400 |
+----+-----+-----+------+------+
1 ответ
Решение
Я просто скопировал и вставил вашу формулу:
select id, token tk, actual_pay pay,
if(@rtp is null, @rtp:=token, @rtp:=@bal+actual_pay) rtp,
if(@bal is null, @bal:=actual_pay-token, @bal:=@rtp-token) bal
from records a
join (select @rtp:=null, @bal:=null) b
;