Как добавить столбец процентного изменения (не процентных пунктов ) в MySQL?
есть таблица со столбцом изменений в процентах:
+---------+
| percent |
+---------+
| -0.50 |
| 0.50 |
| 1.00 |
| -0.20 |
| 0.50 |
| -1.00 |
| -2.00 |
| 0.75 |
| 1.00 |
| 0.50 |
+---------+
Как написать запрос, который вычисляет общее процентное изменение значения для каждой строки, чтобы вычисляемая строка выражала свое процентное изменение и все предыдущие строки процентного изменения?
ожидаемый результат:
+---------+---------------+---------------+
| percent | nominal_value | total_percent |
+---------+---------------+---------------+
| -0.50 | 0.50 | -0.50 |
| 0.50 | 0.75 | -0.25 |
| 1.00 | 1.50 | 0.50 |
| -0.20 | 1.20 | 0.20 |
| 0.50 | 1.80 | 0.80 |
| -1.00 | 0.00 | -1.00 |
| -2.00 | -2.00 | -3.00 |
| 0.75 | -0.50 | -1.50 |
| 1.00 | 0.00 | -1.00 |
| 0.50 | 0.50 | -0.50 |
+---------+---------------+---------------+
Где nominal_value
- произвольное значение, которое было изменено на percent
, то есть для первой строки, если номинальное значение было 1,0 (100%), но было изменено на -0.50
(-50%
), это привело к номинальному значениюзначение 0.5
.
Затем во втором ряду percent
изменение было +0.50
(+50%
), поэтому номинальное значение было увеличено вдвое 0.5 => 0.75
, но можно также сказать, что оно былотолько уменьшен на -0.25
(-25%
) от его исходного значения, так как с 1.0
до 0.75
составляет -0.25
(-25%
) 1.0
.
Это именно то, что я сделал после total_percent
изменения, nominal_value
был только для пояснительной цели и не нужен.
Я использую MySQL 8, поэтому запрос можетиспользуйте оконные функции / диапазоны и т. д.
вот тестовая таблица для репликации:
CREATE TABLE IF NOT EXISTS test
(
percent DECIMAL(5,2) NOT NULL
)
ENGINE = InnoDB
;
INSERT INTO test (percent) VALUES
(-0.50)
,(0.50)
,(1.00)
,(-0.20)
,(0.50)
,(-1.0)
,(-2.0)
,(0.75)
,(1.0)
,(0.50)
;