我的表(市场)有三列:销售员、销售员和周。我想能够计算出MTD的总数(到目前为止)。就我而言,我希望能够提供2016年11月18日至2016年12月18日的数据。我不知道如何在我的表中表示MTD列。如有任何帮助,将不胜感激。
select * from Market:
Salesman Sales Week
Joe 40 12-18-2016
Mike 27 12-11-2016
Todd 29 12-04-2016
Robert 44 11-27-2016
Tony 15 11-20-2016
Morgan 60 11-13-2016
Edwin 25 11-06-2016
Josh 19 10-30-2016
Travis 24 10-23-2016
Wade 35 10-16-2016
我要求的结果是:
Select Salesman, Sales as 'This Week', (some formula) as 'MTD' from Market
where Week = '12-18-2016'
Salesman This Week MTD
Joe 40 40
Mike 0 27
Todd 0 29
Robert 0 44
Tony 0 15
最佳答案
您可以使用窗口函数来执行此操作。在一周内,这应该可以做到:
select m.*
from (Select Salesman, Sales as "This Week",
sum(Sales) over (partition by SalesMan, date_trunc('month', week)
order by week) as MTD
from Market m
) m
where Week = '2016-12-18'; -- assumes that the date is stored in a native date/time format
order by
子句中的over
仅用于支持不是最近一周的周。