2017-01-06 4 views
0

У меня есть эта таблица, которая показывает мне еженедельные продажи продавцами. Мой текущий запрос (прилагается) имеет только два столбца. Я хочу добавить третий столбец, который повлечет за собой данные о продажах с начала года (на сегодняшний день). Может кто-то, пожалуйста, окажет помощь в этом, что я могу добавить в свой текущий SQL-запрос?Show YTD with Week

select t2.Source, coalesce(t1."This Week",0) "This Week" 
from sellers t2 left outer join 
(select Source,min("Week") as Week, sum(Sales) "This Week" 
from salesdata 
where Week = date_trunc('week', now())::date - 1 
group by Source, Week) t1 
on t1.Source = t2.Source 

Текущий результат:

Source   This Week 

Judith    18 
Thedia    64 
Alfonso    0 
Michael    15 
Jordan    0 

Желаемый результат:

Source   This Week    YTD 

Judith    18     100 
Thedia    64     150 
Alfonso    0     258 
Michael    15     487 
Jordan    0     78 
+0

Вы также должны объяснить, как вы вычисляете продажи ytd –

+0

Функция окна: 'sum (sales) over (partition by t2.source order by week)' может быть? –

+0

date_trunc ('week', now()) :: date - 1 ... эта функция дает мне данные прошедшего воскресенья, поэтому в этом случае это будет 1/1/2016 по 1/1/2017. –

ответ

1

Предполагая, что поле week имеет тип date в таблице:

SELECT source, week, "This Week", "YTD" 
FROM (
    SELECT source, week, coalesce(sum(sales), 0) AS "This Week" 
    FROM salesdata 
    WHERE week = date_trunc('week', now()) - 1) sw 
JOIN (
    SELECT source, coalesce(sum(sales), 0) AS "YTD" 
    FROM salesdata 
    WHERE date_trunc('year', week) = date_trunc('year', now()) sy USING (source); 

Нет что вам не нужен стол sellers, вся информация может быть получена из таблицы salesdata.

+0

Спасибо, Патрик, ОШИБКА: синтаксическая ошибка в или рядом с «sy» LINE 9: WHERE year :: date = date_trunc ('year', now()) sy ИСПОЛЬЗОВАНИЕ (... что-то происходит @ sy. –

+0

Проблема заключается в том, что я не знаю, как вы получаете информацию о дате. Если 'year' является« целым числом », например, вам нужно использовать' year = extract (year from current_time) :: integer'. «timestamp» в вашей таблице, тогда вы будете использовать 'date_trunc ('year', field) = date_trunc ('year', current_time)' . – Patrick

+0

Спасибо, Патрик, у меня только одно время, и это «Неделя», и это это поле даты. «Неделя» имеет данные за предыдущие годы. –