Группировка данных путем перекрытия выбора даты в Oracle SQL - PullRequest
0 голосов
/ 01 декабря 2019

Мне было интересно, существует ли эффективный способ группировки данных, перекрывающих временные рамки. Моя основная цель в освоении этого упражнения - запросить следующую таблицу:

transaction_date  | item_type | profit
  'dd/mm/yy'            ""        ''

пример:

transaction_date  | item_type | profit
  03/01/2018           Book        2
  03/05/2018           Book        5
  04/05/2018           Book        6
  03/06/2018           Misc.       20

И получить

(1) Группировка по неделям, илет, поэтому запрос имеет столбцы год |date

Это уже было успешно выполнено , просто используя group by со следующими строками

to_char(transaction_date, 'YY'), to_char(transaction_date, 'WW')

, которые вместе с некоторыми другими желаемыми группировками для item_type и профита дают

year | week  | item_type | profit
 18     17        Book        2
 18     18        Book       11
 18     22        Misc       20

(2) Дополнительный столбец, в котором указана прибыль за последние 4 недели (если запись на 7-й неделе, это будут итоги за 3-6 недель, а не ровно 4 недели назад).)

year | week  | item_type | profit  | profit_last4wks
 18     17        Book        2           0
 18     18        Book       11           2
 18     22        Misc       20           0

Этот шаг - проблема , так как в настоящее время я очень озадачен тем, как подойти к нему и с чего начать в качестве первого шага. Любые предложения или указания в правильном направлении были бы очень полезны.

У меня была идея сделать шаги (1) и (2) в отдельных запросахи присоединиться тогда, но даже получение (2) отдельно поставило меня в тупик. Я также подумал, что сначала можно получить (1) , а затем каким-то образом добавить нужный столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...