Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли написать селект с помощью аналитических функций? / 14 сообщений из 14, страница 1 из 1
03.02.2011, 14:35
    #37095461
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
Есть выборка операций:
1. параметры самой операции (место совершения, номер карты, дата, сумма и т.п.)
2. сюда по номеру карты join'ится место активации карты (это может быть другой магазин)

Пример обрезанной выборки:
OPER_PLACEACT_PLACEAMOUNTМагазин 1Магазин 11Магазин 1Магазин 210Магазин 2Магазин 1100Магазин 2Магазин 21000

Нужно написать агрегирующий селект, который бы вывел для кажого места совершения всякие суммочки и другие агрегирующие значения (среднее, макс-мин и т.д.), это довольно типичная задачка и решается обычным group by oper_place.

Как можно посчитать сумму операций, выполненных во всех магазинах для карт, активированных в данном магазине?

Для выше приведённого примера будет:
OPER_PLACE,SUM_WITH_OWN_CARDS
Магазин 1,1+100=101
...
Рейтинг: 0 / 0
03.02.2011, 14:37
    #37095466
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
Сорри, недопост. :)

Для выше приведённого примера будет:
OPER_PLACESUM_OWN_CARDSМагазин 1101Магазин 2 1010

Полагаю, что здесь нужны оконные функции, но никак не могу найти подходящей. :(
...
Рейтинг: 0 / 0
03.02.2011, 14:42
    #37095487
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
PranT,

У магазинов есть числовые идентификаторы?
...
Рейтинг: 0 / 0
03.02.2011, 14:43
    #37095497
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
Да. Есть и "очеловеченное" имя и id'шники.
...
Рейтинг: 0 / 0
03.02.2011, 15:02
    #37095567
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
PranT,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with s as(
select  1  op_id, 'Магазин 1' op,  1  ac_id, 'Магазин 1' ac,  1      amount from dual union all
select  1  op_id, 'Магазин 1'   ,  2  ac_id, 'Магазин 2'   ,  10     amount from dual union all
select  2  op_id, 'Магазин 2'   ,  1  ac_id, 'Магазин 1'   ,  100    amount from dual union all
select  2  op_id, 'Магазин 2'   ,  2  ac_id, 'Магазин 2'   ,  1000   amount from dual --union all
)
select s.*,
case when op_id > nvl(ac_id,  0 ) then
    sum(amount) over (order by ac_id range between abs(op_id - nvl(ac_id,  0 )) following and abs(op_id - ac_id) following)
else
    sum(amount) over (order by ac_id range between abs(op_id - nvl(ac_id,  0 )) preceding and abs(op_id - ac_id) preceding)  
end sm
from s
order by op_id, op

P.S. агрегацию выполните сами.
...
Рейтинг: 0 / 0
03.02.2011, 15:04
    #37095571
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
PranTВозможно ли написать селект с помощью аналитических функций?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
   case when upper(lag(column_value) over(order by rownum)) in (select keyword from v$reserved_words where length>= 3 ) 
      then '   ' 
      else '' 
   end||column_value селект
from table(sys.odcivarchar2list('select','*','from','dual'));

СЕЛЕКТ        
--------------
select        
   *          
from          
   dual       
...
Рейтинг: 0 / 0
03.02.2011, 15:09
    #37095591
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
...
Рейтинг: 0 / 0
03.02.2011, 15:11
    #37095598
CV
CV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
PranT
Как можно посчитать сумму операций, выполненных во всех магазинах для карт, активированных в данном магазине?



Хм. А чем отличается от первого случая? Кроме того что было по магазинам, а стало по магазинам активации?
...
Рейтинг: 0 / 0
09.02.2011, 07:57
    #37105739
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
AmKad , спасибо, похоже, то, что нужно. Я верно понимаю, что для агрегации нужно будет использовать встроенные представления select from (select ...)?

При попытке агрегации в лоб получил "ORA-30483: window functions are not allowed here".

CV , в итоге нужно получить агрегацию по месту совершения операции, т.е. нужно посчитать сумму операцию в текущем магазине + сумму операций в других магазинах по картам, активированным в текущем магазине.
...
Рейтинг: 0 / 0
15.02.2011, 07:56
    #37116195
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
Я верно понимаю, что для агрегации нужно будет использовать встроенные представления select from (select ...)?

При попытке агрегации в лоб получил "ORA-30483: window functions are not allowed here".
...
Рейтинг: 0 / 0
15.02.2011, 08:39
    #37116226
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
...
Рейтинг: 0 / 0
15.02.2011, 14:58
    #37117313
PranT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.05.2017, 19:48
    #39460909
Mmmaha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
-2-,

Помогите, пожалуйста! Что это?
{"uuid":"1846ba5e-e23d-4f6d-b014-320bd6047f28","v":"6.0","xm":"001003","MD":"RAINBOW","v_2":300,"v_2_name":"3.0.23_300"}
{"ac_id":2,"op_id":"0002","s_dt":1495873839122,"f":0,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495873841276,"f":0,"name":""}
{"ac_id":2,"op_id":"0108","s_dt":1495873881822,"f":0,"name":""}
{"ac_id":2,"op_id":"0305","s_dt":1495873887870,"f":0,"name":""}
{"ac_id":2,"op_id":"0305","s_dt":1495873887891,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874017042,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874019232,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874022595,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874023645,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874023862,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874024131,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874025277,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874025728,"f":0,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874025975,"f":0,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874040007,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874048081,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874054487,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874075482,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874101269,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874168833,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874194925,"f":1,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495874217267,"f":0,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495874594564,"f":0,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874627672,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874654357,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874711745,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874716301,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874732324,"f":1,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495874738750,"f":1,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495874757358,"f":0,"name":""}
{"ac_id":2,"op_id":"0014","s_dt":1495874768850,"f":1,"name":""}
{"ac_id":2,"op_id":"0014","s_dt":1495874774058,"f":1,"name":""}
{"ac_id":2,"op_id":"0002","s_dt":1495874803743,"f":0,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495874808285,"f":0,"name":""}
{"ac_id":2,"op_id":"0108","s_dt":1495874860891,"f":0,"name":""}
{"ac_id":2,"op_id":"0006","s_dt":1495874872594,"f":0,"name":""}
{"ac_id":2,"op_id":"0004","s_dt":1495874888081,"f":0,"name":""}
{"ac_id":2,"op_id":"0004","s_dt":1495874897049,"f":0,"name":""}
{"ac_id":2,"op_id":"0005","s_dt":1495874909898,"f":0,"name":""}
{"ac_id":2,"op_id":"0015","s_dt":1495874920897,"f":0,"name":""}
{"ac_id":2,"op_id":"0010","s_dt":1495874925886,"f":0,"name":""}
{"ac_id":2,"op_id":"0016","s_dt":1495874945811,"f":0,"name":""}
{"ac_id":2,"op_id":"0016","s_dt":1495874947797,"f":0,"name":""}
{"ac_id":2,"op_id":"0108","s_dt":1495874964838,"f":0,"name":""}
{"ac_id":2,"op_id":"0105","s_dt":1495875073583,"f":0,"name":""}
{"ac_id":2,"op_id":"0101","s_dt":1495875089549,"f":0,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495882428443,"f":0,"name":""}
{"ac_id":2,"op_id":"0003","s_dt":1495882446159,"f":0,"name":""}
{"ac_id":2,"op_id":"0108","s_dt":1495882528986,"f":0,"name":""}
{"ac_id":2,"op_id":"0305","s_dt":1495882535634,"f":0,"name":""}
{"ac_id":2,"op_id":"0302","s_dt":1495882539002,"f":0,"name":""}
{"ac_id":3,"op_id":"0401","s_dt":1495882550332,"f":0,"name":"Leisure"}
...
Рейтинг: 0 / 0
27.05.2017, 21:19
    #39460935
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли написать селект с помощью аналитических функций?
- Ой доктор, что это у меня !?
- О господи, что это у вас ?!!!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли написать селект с помощью аналитических функций? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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