PFB постановка задачи.Я попытался с использованием параметра density_rank, сохраняю функцию, но каким-то образом я не могу ее взломать.Может кто-нибудь, пожалуйста, помогите.Это небольшой набор данных для представления проблемы.Оригинальные таблицы имеют несколько миллионов строк.
сценарии для набора данных:
CREATE TABLE TRANSACTION (
ITEM VARCHAR2(25 BYTE),
LOCATION NUMBER(10,0),
TRAN_DATE DATE,
POST_DATE DATE
)
Insert into TRANSACTION (ITEM,LOCATION,TRAN_DATE,POST_DATE) values ('13252099',473,to_date('09-JUL-18','DD-MON-RR'),to_date('09-JUL-18','DD-MON-RR'));
Insert into TRANSACTION (ITEM,LOCATION,TRAN_DATE,POST_DATE) values ('13252099',473,to_date('25-JUL-18','DD-MON-RR'),to_date('25-JUL-18','DD-MON-RR'));
Insert into TRANSACTION (ITEM,LOCATION,TRAN_DATE,POST_DATE) values ('13252098',470,to_date('09-JUL-18','DD-MON-RR'),to_date('09-JUL-18','DD-MON-RR'));
Insert into TRANSACTION (ITEM,LOCATION,TRAN_DATE,POST_DATE) values ('13252098',470,to_date('28-JUL-18','DD-MON-RR'),to_date('28-JUL-18','DD-MON-RR'));
CREATE TABLE RETAIL_DESC (
ITEM VARCHAR2(25 BYTE),
LOC NUMBER(10,0),
UNIT_RETAIL NUMBER(20,4),
ACTION_DATE DATE
)
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252099',473,379.97,to_date('09-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252099',473,299.97,to_date('22-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252099',473,0.01,to_date('19-AUG-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252099',473,379.97,to_date('25-AUG-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252098',470,500.18,to_date('08-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252098',470,299.97,to_date('09-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252098',470,0.01,to_date('19-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252098',470,379.97,to_date('24-JUL-18','DD-MON-RR'));
Insert into RETAIL_DESC (ITEM,LOC,UNIT_RETAIL,ACTION_DATE) values ('13252098',470,300,to_date('24-JUL-18','DD-MON-RR'));
введите описание изображения здесь
Примечание: я использую базу данных Oracle 11g.1.Table Retail_desc содержит unit_retail (цена) для элемента для определенного местоположения.Action_date - это дата, в которую unit_retail для этого предмета обновляется до новой цены для данного конкретного местоположения.комбинация предмет / местоположение может иметь несколько action_date в зависимости от того, сколько дней цена обновляется до новых цен.
Табличная транзакция содержит дату (tran_date), в которую товар был продан из определенного места покупателю (post_date совпадает с tran_date- может игнорировать его).
я хочу знать unit_retail (цена) товара, который был продан клиенту в определенном месте.
дополнительные комментарии: 1. для каждой комбинации товара / местоположения я хочу получить розничную единицу, какую комбинацию товара / местоположения имеет во время транзакции (tran_date) 2. action_date - дата, в которую unit_retail для товара / местоположения изменяется с новой розничной торговлей.3. если единичная розничная цена изменяется несколько раз за одну дату действия, тогда выберите розничную торговлю с более низкой ценой.