powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сумма с нарастающим итогом
14 сообщений из 14, страница 1 из 1
Сумма с нарастающим итогом
    #39397295
lenysik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Прошу подсказать, как получить сумму с нарастающим итогом без пропуска дат, например,

Значения есть на даты
01.01.2017 3
05.01.2017 8
06.01.2017 1
08.01.2017 2
10.01.2017 2


Надо получить
01.01.2017 3
02.01.2017 3
03.01.2017 3
04.01.2017 3
05.01.2017 11
06.01.2017 12
07.01.2017 12
08.01.2017 14
09.01.2017 14
10.01.2017 16
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397313
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,
на кухню -->
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397318
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,

календарь + partition join + sum over
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397340
lenysik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
envlenysik,

календарь + partition join + sum over
У меня пропускаются даты, если нет дат в таблице b.
Где ошибка?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
select a.dt , 
                          sum(num) over(order by a.dt desc range unbounded preceding) sval_range
       
          from  (select to_date('01.01.2017','dd.mm.yyyy') + level -1 dt
                  from dual connect by level  <= 31)   a 
      left join  b on b.dat=a.dt
      
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397344
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,
ошибка в выборе профессии. тебе же прямым текстом написали КАЛЕНДАРЬ+
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397348
lenysik,

env partition join
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397350
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,

Почему desc? И что будет, если нет значения на 01.01.2017?
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397354
lenysik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

desc чтобы сумма на сегодня была минимальная на последнюю дату, и потом возрастала (немного упростила условие)
если на 01.01.2017 нет значения, значит должна быть накопленная сумма (или посл дата нет значения, значит 0)
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397359
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,

Убери desc и посмотри на результат
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397362
lenysik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Неправильный, с пропусками дат

22.01.2017 124.01.2017 225.01.2017 326.01.2017 428.01.2017 529.01.2017 6
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397368
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,

Пруф в sqlplus приведи. вот твой же запрос без desc.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with b as (
           select to_date('01.01.2017','dd.mm.yyyy') dat, 3 num from dual union all
           select to_date('05.01.2017','dd.mm.yyyy') dat, 8 num from dual union all
           select to_date('06.01.2017','dd.mm.yyyy') dat, 1 num from dual union all
           select to_date('08.01.2017','dd.mm.yyyy') dat, 2 num from dual union all
           select to_date('10.01.2017','dd.mm.yyyy') dat, 2 num from dual)
select a.dt , 
      sum(num) over(order by a.dt range unbounded preceding) sval_range
from  (select to_date('01.01.2017','dd.mm.yyyy') + level -1 dt
    from dual connect by level  <= 12)   a 
left join  b on b.dat=a.dt;



Предположу, что запрос в задаче отличается от выполняемого на "реальных данных".
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397638
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenysik,

завтра сделаю
прігрузілі меня

....
stax
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397662
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with t as (
           select  dt,
                   months_between(lead(dt) over(order by dt),dt) multiplier,
                   sum(amt) over(order by dt) amt
             from  tbl
          )
select  add_months(dt,level - 1) dt,
        amt
  from  t
  connect by dt = prior dt
         and prior sys_guid() is not null
         and level <= multiplier
/

DT               AMT
--------- ----------
01-JAN-17          3
01-FEB-17          3
01-MAR-17          3
01-APR-17          3
01-MAY-17         11
01-JUN-17         12
01-JUL-17         12
01-AUG-17         14
01-SEP-17         14
01-OCT-17         16

10 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Сумма с нарастающим итогом
    #39397713
Xdredd.vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lenysik, ну вот так на первый взгляд :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
With t As
 (Select to_date('01.01.2017', 'dd.mm.yyyy') a, 3 b
		From dual
	Union
	Select to_date('05.01.2017', 'dd.mm.yyyy') a, 8 b
		From dual
	Union
	Select to_date('06.01.2017', 'dd.mm.yyyy') a, 1 b
		From dual
	Union
	Select to_date('08.01.2017', 'dd.mm.yyyy') a, 2 b
		From dual
	Union
	Select to_date('10.01.2017', 'dd.mm.yyyy') a, 3 b
		From dual),
x As
 (Select mina + Level - 1 cura
		From (Select Min(t.a) mina, Max(t.a) maxa From t) t
	Connect By mina + Level - 1 <= maxa)

Select x.cura a, Sum(nvl(t.b, 0)) over(Order By x.cura) b
	From x
	Left Join t
		On x.cura = t.a



ab01.01.2017302.01.2017303.01.2017304.01.2017305.01.20171106.01.20171207.01.20171208.01.20171409.01.20171410.01.201717
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сумма с нарастающим итогом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]