Рассмотрим следующую структуру таблицы:
|----------|-----------|----|
| Quantity | BaseValue | Id |
|----------|-----------|----|
| -0.3 | 1 | 1 |
| -0.8 | 1 | 2 |
| 0.5 | 1 | 3 |
| -0.2 | 1 | 4 |
|----------|-----------|----|
Допустим, это таблица с именем Transactions
.Есть ли способ сделать запрос на выборку для этой таблицы, который будет суммировать значения в столбце Quantity
, основываясь на следующем наборе правил:
- , каждая строка будет суммироваться, чтоимеет
Id
меньше x
- сначала, добавьте
BaseValue
к переменной рода, давайте назовем ее y - затем для каждой строки добавьте
Quantity
к y , и если результат будет меньше 0, y будет 0
Результат, который я хотел бы видеть, выглядит примерно так:
, если x равно 1, y должно быть 1
если x равно 2, y должно быть 0,7
если x равно 3, y должнобыть 0
, если x равно 4, y должно быть 0,5
после выбораоперация Я хотел бы увидеть следующую таблицу, например:
|----------|-----------|----|-----|
| Quantity | BaseValue | Id | Y |
|----------|-----------|----|-----|
| -0.3 | 1 | 1 | 1 |
| -0.8 | 1 | 2 | 0.7 |
| 0.5 | 1 | 3 | 0 |
| -0.2 | 1 | 4 | 0.5 |
|----------|-----------|----|-----|
Используемая версия MySQL: 10.2.16-MariaDB
Пример:
Допустим, x равно 4, программа должна работать следующим образом:
- Y = BaseValue + 0
- Получить строку с
Id=1
,Суммируя вместе Y и Quantity
от строки, результат равен 0,7, потому что это больше 0, Y теперь составляет 0,7 - Получить строку с
Id=2
, сумма вместе Y и Quantity
от строки, результат равен -0,1, потому что это меньше 0, Y теперь равно 0 - Получить строкус
Id=3
, суммой вместе Y и Quantity
от строки, результат равен 0,5, это больше 0, поэтому он остается - Больше не нужно принимать строки как
4 < x
не соответствует действительности, поэтому Y равно 0,5