我的桌子(市场)中有三列:推销员,销售和周。我希望能够计算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
答案 0 :(得分:2)
您可以使用窗口功能执行此操作。对于一个星期,这应该做:
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
只需支持不是最近一周的周数。