Я новичок с teradata SQL Помощник, и я не знаю, может ли он делать то, что мне нужно.
У меня есть база с идентификатором переменных, месяц (или период) и доходы за этот месяц. Что мне нужно, это поставить 1, если клиент покупает в ближайшие 3 месяца или 0, если нет, и сделать это для всех ID. Например, если я нахожусь в 1-м месяце, и в течение следующих 3-х месяцев есть покупка, тогда поставьте 1 в этой строке для этого клиента. В последние периоды, так как не будет 3 месяца, появляется NA.
Вот код для примеров данных:
IF OBJECT_ID('tempdb..#StackTest') IS NOT NULL
DROP TABLE #StackTest;
CREATE TABLE #StackTest
(Id int
,Month int
,Income int
);
INSERT INTO #StackTest
(Id
,Month
,Income
)
VALUES
(1, 1, 5000),
(1, 2, 0),
(1, 3, 0),
(1',4, 0),
(1,5, 0),
(1,6, 0),
(1, 7, 400),
(1, 8, 0),
(1, 9, 0),
(1, 10, 0),
(1, 11, 0),
(1, 12, 0),
(1, 13, 400),
(2, 1, 5000),
(2, 2, 0),
(2, 3, 100),
(2,4, 0),
(2,5, 0),
(2,6, 0),
(2, 7, 0),
(2, 8, 1500),
(2, 9, 0),
(2, 10, 0),
(2, 11, 0),
(2, 12, 100),
(2, 13, 750),
(3, 1, 0),
(3, 2, 0),
(3, 3, 0),
(3',4, 0),
(3,5, 700),
(3,6, 240),
(3, 7, 100),
(3, 8, 0),
(3, 9, 0),
(3, 10, 0),
(3, 11, 0),
(3, 12, 500),
(3, 13, 760);
ID | Month | Incomes
1 | 1 | 5000
1 | 2 | 0
1 | 3 | 0
1 | 4 | 0
1 | 5 | 0
1 | 6 | 0
1 | 7 | 400
1 | 8 | 300
1 | 9 | 0
1 | 10 | 0
1 | 11 | 0
1 | 12 | 0
1 | 13 | 400
2 | 1 | 0
2 | 2 | 100
2 | 3 | 0
2 | 4 | 0
2 | 5 | 0
2 | 6 | 0
2 | 7 | 0
2 | 8 | 1500
2 | 9 | 0
2 | 10 | 0
2 | 11 | 0
2 | 12 | 100
2 | 13 | 750
3 | 1 | 0
3 | 2 | 0
3 | 3 | 0
3 | 4 | 0
3 | 5 | 700
3 | 6 | 240
3 | 7 | 100
3 | 8 | 0
3 | 9 | 0
3 | 10 | 0
3 | 11 | 0
3 | 12 | 500
3 | 13 | 760
Я должен был сделать это с R и здесь они могли бы помочь мне, но теперь я должен сделать это с терадатой sql помощник.
Это то, что я хочу:
ID | Month | Incomes | Quarterly
1 | 1 | 5000 | 0
1 | 2 | 0 | 0
1 | 3 | 0 | 0
1 | 4 | 0 | 1
1 | 5 | 0 | 1
1 | 6 | 0 | 1
1 | 7 | 400 | 1
1 | 8 | 300 | 0
1 | 9 | 0 | 0
1 | 10 | 0 | 0
1 | 11 | 0 | NA
1 | 12 | 0 | NA
1 | 13 | 400 | NA
2 | 1 | 0 | 1
2 | 2 | 100 | 0
2 | 3 | 0 | 0
2 | 4 | 0 | 0
2 | 5 | 0 | 1
2 | 6 | 0 | 1
2 | 7 | 0 | 1
2 | 8 | 1500 | 0
2 | 9 | 0 | 1
2 | 10 | 0 | 1
2 | 11 | 0 | NA
2 | 12 | 100 | NA
2 | 13 | 750 | NA
3 | 1 | 0 | 0
3 | 2 | 0 | 1
3 | 3 | 0 | 1
3 | 4 | 0 | 1
3 | 5 | 700 | 1
3 | 6 | 240 | 1
3 | 7 | 100 | 0
3 | 8 | 0 | 0
3 | 9 | 0 | 1
3 | 10 | 0 | 1
3 | 11 | 0 | NA
3 | 12 | 500 | NA
3 | 13 | 760 | NA
Это была моя попытка, но, очевидно, это не удалось, и я не получил то, что ожидал.
select Id,Month,Incomes, SUM(Incomes) OVER (PARTITION BY Id ORDER BY Month ROWS 3 PRECEDING) AS Quarterly from rentability order by Id, Month
* Рентабельность - это созданная таблица.
Кто-нибудь может пометить 1 или максимум этого периода? Спасибо!