Sql 随着时间的推移计数的意外输出

Sql 随着时间的推移计数的意外输出,sql,amazon-redshift,Sql,Amazon Redshift,在下面的查询中,我得到了累计销售代表及其各自的客户加班时间(月末): 客户加班确实是正确的,但是,我如何才能累积获得正确的重复次数,如下所示: month count sum 1/1/2018 350 2000 2/1/2018 700 3000 3/1/2018 1000 4000 仅供参考,我可以通过执行AGG(rep_id)在Tableau中实现此功能。查询中有一些问题需要解决 count(rep\u id)正在计算非空值,因为可能

在下面的查询中,我得到了累计销售代表及其各自的客户加班时间(月末):

客户加班确实是正确的,但是,我如何才能累积获得正确的重复次数,如下所示:

month       count   sum
1/1/2018    350     2000
2/1/2018    700     3000
3/1/2018    1000    4000

仅供参考,我可以通过执行AGG(rep_id)在Tableau中实现此功能。

查询中有一些问题需要解决

count(rep\u id)
正在计算非空值,因为可能没有空的rep\u id,这与计算行数相同

group by date,rep_id
每个rep_id返回一行,每个日期返回一行,而不是每个月返回一行。我知道您需要按日期分组,因为您在row_number()函数中使用它

在不修改太多原始查询的情况下,我会这样写:(对不起,没有测试)


统计当月或之前的人数。

您好,吉斯兰,欢迎光临。尝试使用StackOverflow,以及如何提供
month       count   sum
1/1/2018    1000    2000
2/1/2018    1000    3000
3/1/2018    1000    4000
month       count   sum
1/1/2018    350     2000
2/1/2018    700     3000
3/1/2018    1000    4000
select month, count(DISTINCT rep_id), count(DISTINCT user_id) 
  from
( 
  select date_trunc('month', date)::date as month, 
    CASE WHEN created_date <= date THEN rep_id ELSE NULL END rep_id, 
    case when applied_date <= date then user_id else null end) user_id
  from
  ( 
    select r.rep_id, r.created_date, u.id as user_id, u.applied_date
    from reps r
    left outer join clients u on r.id = u.rep_id
  ) z
cross join
  (select * from calendar
    where date between '2018-01-01' and convert_timezone('PST', getdate())
  ) c
) sub
group by 1
   CASE WHEN created_date <= date THEN rep_id ELSE NULL END rep_id, 
    case when applied_date <= date then user_id else null end) user_id
count(DISTINCT rep_id), count(DISTINCT user_id)