|
|
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
Есть таблица: +------------+----------+--------+ | data | investor | delta | +------------+----------+--------+ | 2014-10-10 | 1 | 100.00 | | 2014-10-11 | 0 | -20.00 | | 2014-10-12 | 2 | 200.00 | | 2014-10-12 | 1 | -50.00 | | 2014-10-13 | 0 | 50.00 | | 2014-10-14 | 3 | 150.00 | +------------+----------+--------+ Требуется подсчитать сумму дельт каждого инвестора за весь период от первой до текущей даты. Пытался делать так: Код: sql 1. 2. 3. 4. 5. В результате получил: +------------+----------+--------------+ | Data | Investor | sum(C.Delta) | +------------+----------+--------------+ | 2014-10-10 | 0 | NULL | | 2014-10-10 | 1 | 200.00 | | 2014-10-10 | 2 | NULL | | 2014-10-10 | 3 | NULL | | 2014-10-11 | 0 | -40.00 | | 2014-10-11 | 1 | 200.00 | | 2014-10-11 | 2 | NULL | | 2014-10-11 | 3 | NULL | | 2014-10-12 | 0 | -80.00 | | 2014-10-12 | 1 | 200.00 | | 2014-10-12 | 2 | 400.00 | | 2014-10-12 | 3 | NULL | | 2014-10-13 | 0 | 60.00 | | 2014-10-13 | 1 | 100.00 | | 2014-10-13 | 2 | 200.00 | | 2014-10-13 | 3 | NULL | | 2014-10-14 | 0 | 60.00 | | 2014-10-14 | 1 | 100.00 | | 2014-10-14 | 2 | 200.00 | | 2014-10-14 | 3 | 150.00 | +------------+----------+--------------+ Структура первых двух столбцов верная. Значения NULL в третьем на нужных местах, но вот сами суммы неверные. Они как минимум удвоились. Что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 16:39:46 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
KSVSVKТребуется подсчитать сумму дельт каждого инвестора за весь период от первой до текущей датыэээ... Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 18:31:17 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
автор Код: sql 1. 2. 3. 4. Подобный Select вообще не сработает, ибо в group by стоит поле, которого в Select нет. Но даже с этим исправлением он даст суммы за каждый день, а не за требуемый период. Если запрос переписать так: Код: sql 1. 2. 3. 4. 5. 6. то результат опять неправильный: +------------+----------+--------------+ | Data | Investor | sum(C.Delta) | +------------+----------+--------------+ | 2014-10-10 | 1 | 200.00 | | 2014-10-11 | 0 | -40.00 | | 2014-10-11 | 1 | 200.00 | | 2014-10-12 | 0 | -80.00 | | 2014-10-12 | 1 | 80.00 | | 2014-10-12 | 2 | 400.00 | | 2014-10-13 | 0 | 60.00 | | 2014-10-13 | 1 | 40.00 | | 2014-10-13 | 2 | 200.00 | | 2014-10-14 | 0 | 60.00 | | 2014-10-14 | 1 | 40.00 | | 2014-10-14 | 2 | 200.00 | | 2014-10-14 | 3 | 150.00 | +------------+----------+--------------+ Предыдущий был ближе к истине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 04:11:40 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
KSVSVK, ну да, ошибся, группировать надо, естественно, по инвестору. KSVSVKПодобный Select вообще не сработает, ибо в group by стоит поле, которого в Select нетв мускле-то? сработает, ещё как. другое дело, что вернёт он чепуху, это да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 12:17:03 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
В том-то и дело, что мне нужны не итоговые суммы по инвесторам, а процесс их накопления, т.е. суммы, накопленные инвесторами на каждый день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 16:37:50 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
KSVSVK, так с этого и надо было начинать. Код: sql 1. 2. 3. 4. Код: sql 1. 2. 3. 4. ну и условие на начальную дату, естественно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 05:05:36 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
как вариант -- посмотрите Ф.А.К темы по выборке ТОП-10 и по нумерации записей. идея в создании переменной с набегаюшей суммой -- при смене инжестора сумма обнуляется и снова накапливается от записи к записи. Это грамчик сложнее, но быстрее (скорее всего). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 06:38:07 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
tanglir, спасибо! Сделал на основе предложенного Вами варианта, слегка его изменив: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 10:43:15 |
|
||
|
Накопительная сумма
|
|||
|---|---|---|---|
|
#18+
KSVSVK, всё-таки не понимаю, зачем вы таблицу множите саму на себя, а затем группируете - лишняя дурная работа для сервера... А то, что из последнего дня минусы не брать, а брать только плюсы Код: sql 1. вообще в условии не было оговорено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 11:06:17 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38782386&tid=1834047]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 323ms |

| 0 / 0 |
