如何计算交易数据

时间:2012-07-20 16:06:14

标签: sql-server tsql

我有一张这样的表,考虑我有大约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笔交易的总金额?

输出:Quarter | Customerid | totalAmount

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

请写一个有效的方法..

1 个答案:

答案 0 :(得分:1)

你应该发布ddl.But你可以尝试这样的事情。它应该工作..

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,索引等以及一些示例数据以及到目前为止使用的方法来做一些艰苦的工作。