2016-09-14 3 views
0

Мой сценарий заключается в том, что человек A может продавать продукт A каждый месяц в году. Из этой информации мне пришлось рассчитать, в каком месяце они продали большую часть продукта А за текущий год.Выполнение COUNT по MAX количеству вхождений

Должны ли они продавать 10 товаров A в январе 6 августа и 10 октября, я беру информацию за последний месяц (в данном случае - октябрь).

Тем не менее, я хочу включить какой-то трекер, который говорит, что если текущий MAX за год был равен человеку A в более ранний момент года, я хочу ЗАЧИТАТЬ количество событий. Если человек А продолжит продавать 15 в Новемере, счетчик должен перезапустить.

Текущие данные =

EMP   PRODUCT   MONTH   VOLUME 
--------------------------------------------------- 
A   A     1    10 
A   A     8    6 
A   A     10   10 

AIM =

EMP   PRODUCT   MAX(VOLUME) COUNT 
--------------------------------------------------- 
A    A     10   2 

Любые предложения, как наиболее эффективный способ решения это было бы здорово!

+1

Вы пробовали что-нибудь? – Aleksej

ответ

1
CREATE TABLE MY_TABLE (EMP VARCHAR2(10), PRODUCT VARCHAR2(10), MONTH NUMBER, VOLUME NUMBER); 

INSERT INTO MY_TABLE VALUES ('A', 'A', 1, 10); 
INSERT INTO MY_TABLE VALUES ('A', 'A', 8, 6); 
INSERT INTO MY_TABLE VALUES ('A', 'A', 10, 10); 

COMMIT; 

--EMP   PRODUCT   MONTH   VOLUME 
----------------------------------------------------- 
--A   A     1    10 
--A   A     8    6 
--A   A     10   10 



SELECT EMP, 
     PRODUCT, 
     VOLUME, 
     MY_COUNT 
    FROM ( SELECT EMP, 
       PRODUCT, 
       VOLUME, 
       COUNT (MY_RANK) MY_COUNT, 
       RANK() OVER (PARTITION BY EMP, PRODUCT ORDER BY VOLUME DESC) 
        MY_SECOND_RANK 
      FROM (SELECT EMP, 
         PRODUCT, 
         volume, 
         RANK() 
          OVER (PARTITION BY EMP, PRODUCT 
            ORDER BY VOLUME DESC, MONTH DESC) 
          MY_RANK 
        FROM MY_TABLE) 
     GROUP BY EMP, PRODUCT, VOLUME) 
WHERE MY_SECOND_RANK = 1; 
+1

Это здорово, спасибо! – lewbo89

+0

Рад, что я мог помочь! ;-) – UltraCommit

Смежные вопросы