如何计算交易数据

如何计算交易数据

问题描述:

我有这样一个表,考虑我有大约500万条记录。如何计算交易数据

  Transaction id|Amount|CustomerId|date 
       1  | 100 | 20  |1/1/2012 
       2  | 230 | 30  |2/2/2012 
       3  | 320 | 20  |2/3/2012 
        etc... 

如何找到2012年每季度每位客户最近5次交易的总金额?

输出:季度|客户ID |总金额

   1 | 20  | 40000 
      1 | 30  | 300000 
      2 ...etc... 

请写一个有效的方法..

+0

你有什么尝试?你能提供更多的样本输入以及预期的输出吗?如果一个客户一个季度只有2笔交易会怎样? – Ghost 2012-07-20 16:11:52

你应该张贴的ddl.But你可以尝试像this.It应该工作..

with mycte as 
(
select customerid,datepart(qq,dt) as qtr,amount, 
row_number() over(partition by      
datepart (qq,dt),customerid order by dt desc,transaction id desc) as rn 
from table where dt >= '01/01/2012' 
) 
select qtr,customerid,sum(amount) as amt 
from mycte 
where rn <= 5 
group by qtr,customerid 

如果您希望别人为您编写高效的查询,那么您必须通过提供ddl,索引等和一些示例数据以及您使用的方法来做一些努力工作 直到现在。