2016-07-01 3 views
0

У меня есть таблица из 2 столбцов, которая имеет ежедневные продажи по дате. Мне нужно вычислить столбец, который суммирует продажи за последние 365 дней.Teradata SQL moving sum

Я думаю, мы могли бы использовать SUM Over с параметром ROW Preceeding. Однако я не уверен в синтаксисе.

Пожалуйста, помогите.

RPT_DT sales   last_year_sales 
    2/1/2015 150,876.00 
    .  
    .  
    .  
1/29/2016 430,715.31 
1/30/2016 407,864.88 
1/31/2016 355,793.55 
2/1/2016 331,142.13 SUM sales from 2/1/15 to 01/31/16 
2/2/2016 269,016.02 SUM sales from 2/2/15 to 02/01/16 
2/3/2016 295,007.69 SUM sales from 2/3/15 to 02/02/16 
+0

Есть ли пробелы в датах? – dnoeth

ответ

1

попробуйте это. Отрегулируйте «предыдущие» отсечки за вашу потребность. Надеюсь, это поможет.

Select 
    rpt_dt, 
    sales, 
    SUM(sales) OVER (ORDER BY rpt_dt ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING) 
    FROM test 
    GROUP BY 1,2 
    ORDER BY 1 
-1

попробовать это:

select sum(sales) as sales from table1 where `date` between 01/01/2015 and 31/12/2015; 
+0

Это не отвечает на мой вопрос – userNid

+0

, если он не отвечает на ваш вопрос, тогда вы должны проголосовать за него ,,, Конечно, я просто пытаюсь понять это, спасибо. –

+0

Я не спустился голос. У меня нет достаточного количества баллов для голосования. Кто-то еще сделал – userNid

0

Синтаксические/функции могут должны быть различными для Teradata, но следующий SQL запрос может помочь:

SELECT 
    s.rpt_date 
    ,s.sales 
    ,SUM(s2.sales) 

FROM dailySales s 
JOIN dailySales s2 ON 
    s2.rpt_date BETWEEN DATEADD(dd, s.rpt_date,-365) AND DATEADD(dd,s.rpt_date,-1) 

GROUP BY 
    s.rpt_date 
    ,s.sales 

Запрос присоединяется к таблице dailySales для себя (один для многих), выборки всех записей за предыдущие 365 дней. Затем мы суммируем их. Обратите внимание, что s.sales не суммируется, так как это значение будет повторяться для каждой записи в s2. (Вы можете использовать AVERAGE, а не помещать его в GROUP BY)

+0

Если таблица большая, это, вероятно, не самый эффективный запрос - использование оконной функции будет намного лучше. –

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