Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор канала по условию / 5 сообщений из 5, страница 1 из 1
10.07.2018, 15:09
    #39672126
Savitskiyov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор канала по условию
Друзья, помогите, туплю.
есть клиенты, у них определенный пул заявок.
Необходимый алгоритм вычисления.
Если между заявками было меньше 10 дней тогда берем канал предыдущий(накопительным итогом с начала действий заявок).
то есть если в течении 10 дней не было других заявок, то она сама для себя является заявкой-привлечения иначе
...
Рейтинг: 0 / 0
10.07.2018, 18:52
    #39672245
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор канала по условию
Savitskiyov,
моделька
Код: 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 1 id, to_date('09.01.2018 10:58:10', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 2 id, to_date('09.01.2018 18:11:32', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 3 id, to_date('09.01.2018 20:11:08', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 4 id, to_date('15.01.2018 17:11:58', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 5 id, to_date('25.01.2018 13:06:01', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 6 id, to_date('31.01.2018 19:50:39', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 7 id, to_date('15.02.2018 12:03:03', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 8 id, to_date('28.02.2018 19:31:10', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 9 id, to_date('05.03.2018 19:30:22', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 10 id, to_date('25.03.2018 17:49:41', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 11 id, to_date('28.03.2018 15:19:04', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 12 id, to_date('28.03.2018 20:44:24', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 13 id, to_date('17.04.2018 17:21:36', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 14 id, to_date('15.05.2018 16:22:46', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 15 id, to_date('25.05.2018 12:46:26', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 16 id, to_date('31.05.2018 12:28:41', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 17 id, to_date('22.06.2018 15:58:57', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 18 id, to_date('22.06.2018 16:00:02', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual)
select id, date_z, channel,diff, res_channel from t
model 
dimension by (id)
measures (date_z, channel,  nvl(trunc(lead(date_z) over(order by date_z)) - trunc(date_z),0) diff, channel res_channel)
rules (res_channel[id] = case when diff[cv()] > 10 then channel[cv()] else nvl(res_channel[cv()-1], res_channel[1]) end)
...
Рейтинг: 0 / 0
11.07.2018, 09:42
    #39672388
Savitskiyov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор канала по условию
Спасибо, для меня это , что то новенькое. Буду разбираться
...
Рейтинг: 0 / 0
11.07.2018, 10:55
    #39672418
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор канала по условию
Savitskiyov,

Можно так попробовать, если я правильно понял задачу
Код: 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.
with t as (
select 1 id, to_date('09.01.2018 10:58:10', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 2 id, to_date('09.01.2018 18:11:32', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 3 id, to_date('09.01.2018 20:11:08', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 4 id, to_date('15.01.2018 17:11:58', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 5 id, to_date('25.01.2018 13:06:01', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 6 id, to_date('31.01.2018 19:50:39', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 7 id, to_date('15.02.2018 12:03:03', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 8 id, to_date('28.02.2018 19:31:10', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 9 id, to_date('05.03.2018 19:30:22', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 10 id, to_date('25.03.2018 17:49:41', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 11 id, to_date('28.03.2018 15:19:04', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 12 id, to_date('28.03.2018 20:44:24', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 13 id, to_date('17.04.2018 17:21:36', 'dd.mm.yyyy hh24:mi:ss') date_z,'Магазин' channel from dual union all
select 14 id, to_date('15.05.2018 16:22:46', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 15 id, to_date('25.05.2018 12:46:26', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 16 id, to_date('31.05.2018 12:28:41', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 17 id, to_date('22.06.2018 15:58:57', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual union all
select 18 id, to_date('22.06.2018 16:00:02', 'dd.mm.yyyy hh24:mi:ss') date_z,'Торговый центр' channel from dual)

select id, date_z, channel, round(date_dif), lag(channel_prev ignore nulls, 1, channel) over (order by date_z) res_channel
from (
    select id, date_z, channel, date_z - lag(date_z) over (order by date_z) date_dif,  
        case when date_z - lag(date_z,1, date_z-11) over (order by date_z)>10 
             then channel end channel_prev
from t)
...
Рейтинг: 0 / 0
11.07.2018, 11:08
    #39672433
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор канала по условию
MaximaXXLесли я правильно понял задачуНе стесняйся, переведи их птичий язык на нормальный.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор канала по условию / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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