Сумма за период - PullRequest
       18

Сумма за период

0 голосов
/ 26 сентября 2019

У меня есть некоторые сомнения относительно суммы строк.У меня есть следующий набор данных в Teradata SQL Assistant:

id period avg_amt flag
111 1   123.5      1
211 1   143.1      1
311 2   122.1      1
411 3   214.5      1
511 3   124.6      0
611 3   153.2      1

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

select 
       id, period, avg_amt, flag, sum(flag) over (partition by id order by period)
from dataset

и

select 
       id, period, avg_amt, flag, sum(flag)
       group by id, period, avg_amt, flag
from dataset

Выходные данные не возвращают то, что я должен ожидать, т.е. для периода 1сумма = 3, период 2 сумма 1, период 3 сумма 2.

Не могли бы вы сказать мне, что не так?Спасибо

1 Ответ

0 голосов
/ 26 сентября 2019

Чтобы получить простую сумму:

select period, sum(flag) total_flag
from dataset
group by period

В SQL-сервере, чтобы добавить обратно в остальную информацию, вы можете использовать подзапрос и присоединить его обратно:

select id, dataset.period, avg_amt, flag, total_flag
from dataset
inner join (
   select period, sum(flag) total_flag
   from dataset
   group by period
) TF on TF.period=dataset.period

Я надеюсь, что это все еще хорошо с teradata-sql-assistant.

...