Таблица Сумма продаж за месяц с Лас-счетом Покупатель Товар Продажа месяца - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь вернуть сумму покупок за месяц с последней продажей аккаунта на одного клиента либо с использованием табличных расчетов, либо с помощью sql.

У меня есть данные с августа по январь, и каждый месяц имеет 100 000 учетных записей плюс несколько пользователей в учетной записи.Набор данных выглядит следующим образом:

 Account User Item  Plan        Status date     Sale
 1       a   toy    unlimited  open    1/1/2019    10  
 1       a   book   unlimited  closed  1/5/2019    10   
 1       a   toy    unlimited  open    1/10/2019   10 
 1       b   toy    unlimited  open    1/1/2019    10 
 1       c   book    unlimited  open   1/1/2019    10 
 1       d   toy    unlimited  open    1/1/2019    10 
 1       d   toy    unlimited  open    1/2/2019    10 
 1       f   toy    unlimited  open    1/1/2019    10 
 1       a   toy    unlimited  open    2/1/2019    10  
 1       a   book   unlimited  closed  2/5/2019    10   
 1       a   toy    unlimited  open    2/10/2019   10 
 1       b   toy    unlimited  open    2/1/2019    10 
 1       c   book    unlimited  open   2/1/2019    10 
 1       d   toy    unlimited  open    2/1/2019    10 
 1       d   toy    unlimited  open    2/2/2019    10 
 1       f   toy    unlimited  open    2/1/2019    10 

Желаемые результаты для каждой учетной записи, клиента, последней продажи и общего объема продаж за месяц должны выглядеть следующим образом:

 1       a   toy    unlimited  open    1/10/2019   30 
 1       b   toy    unlimited  open    1/1/2019    10 
 1       c   book    unlimited  open   1/1/2019    10 
 1       d   toy    unlimited  open    1/2/2019    20 
 1       f   toy    unlimited  open    1/1/2019    10 
 1       a   toy    unlimited  open    2/10/2019   30 
 1       b   toy    unlimited  open    2/1/2019    10 
 1       c   book    unlimited  open   2/1/2019    10 
 1       d   toy    unlimited  open    2/2/2019    20 
 1       f   toy    unlimited  open    2/1/2019    10 

Я пробовал таблицы с использованием

IF [PlanCount] > 1 and [T|F MaxDate] = True then [Plan] else [Plan] END

ИЛИ Row_Number в кусте, но с любым количеством столбцов, которое больше 0, в нем есть нулевое значение, при этом максимальная дата является причиной того, что план установлен для maxdate, но также равен нулю, когда условие maxDate имеет значение false.Где это должно быть сделано, на уровне etl или уровне расчета таблиц?

1 Ответ

0 голосов
/ 02 марта 2019

В большинстве баз данных вы можете использовать оконные функции, например:

select t.*
from (select t.*,
             sum(sale) over (partition by account, user, year(date), month(date)) as month_sales,
             row_number() over (partition by account, user, year(date), month(date) order by date desc) as seqnum
      from t
     ) t
where seqnum = 1;

Функции для извлечения года и месяца из даты могут зависеть от того, какую базу данных вы фактически используете.

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