Суммирование значений в одном столбце определенным образом - PullRequest
0 голосов
/ 17 декабря 2018

Итак, у меня есть простая таблица:

id     amount
 1.      40
 2.      50
 3.      60

Я хотел бы создать запрос, который будет возвращать номер идентификатора с суммой таким образом, что первый идентификатор будет иметь сумму 40, второй идентификатор будет иметь40 + 50 = 90, третье 40 + 50 + 60 = 150. Визуализированный вывод будет выглядеть примерно так:

id    sum
1.     40
2.     90
3.    150

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Вот вариант MySQL 8+:

SELECT
    id,
    SUM(amount) OVER (ORDER BY id) sum
FROM yourTable;

Демо

Это, пожалуй, самый эффективный способ написания вашего запроса,Если вы используете более раннюю версию MySQL, используйте коррелированный подзапрос:

SELECT
    id,
    (SELECT SUM(t2.amount) FROM yourTable t2 WHERE t2.id <= t1.id) AS sum
FROM yourTable t1;
0 голосов
/ 17 декабря 2018

Это очень просто сделать ...

SELECT id, SUM(amount) OVER (ORDER BY id) sum FROM TableName
0 голосов
/ 17 декабря 2018

Вы можете использовать коррелированный подзапрос:

select t.*,
       (select sum(t1.amount) from table t1 where t1.id <= t.id) as sum
from table t;

Если вы работаете с последней версией, вы можете сделать:

select t.*,
       sum(amount) over (order by id)
from table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...