显示MTD的总计

时间:2016-12-20 20:58:26

标签: sql postgresql

我的桌子(市场)中有三列:推销员,销售和周。我希望能够计算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

1 个答案:

答案 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只需支持不是最近一周的周数。