【发布时间】:2012-05-22 14:11:30
【问题描述】:
我有一个查询,它返回对按日期采样的不同对象的请求数, 每天可以有不止一个采样器。 开头的With部分用于每天只获取最新的样本。
With RankedSamples As
(
Select Id, runend
, ROW_NUMBER() OVER( PARTITION BY convert(varchar , runEnd, 1) ORDER BY runEnd DESC ) ItemRank
From t_SamplesRuns
where runend > '05/13/12' and runend < '05/18/12'
)
select sum(TotalRequests) Hits,
convert(nvarchar(10), day(smp.date)) + '-' +
convert(nvarchar(10), month(smp.date)) + '-' +
convert(nvarchar(10), year(smp.date)) date
from t_samples smp
where smp.runid in (
select id
from RankedSamples
where ItemRank = 1
)
group by convert(nvarchar(10), day(smp.date)) + '-' +
convert(nvarchar(10), month(smp.date)) + '-' +
convert(nvarchar(10), year(smp.date))
这会返回例如:
Hits date
111111 13-5-2012
222222 14-5-2012
333333 15-5-2012
444444 16-5-2012
555555 17-5-2012
我需要它返回的是这些字段 + 前一天的点击次数及其减法(第一行无关):
Hits date Prev Res
111111 13-5-2012 0 111111
222223 14-5-2012 111111 111112
333335 15-5-2012 222223 111113
444447 16-5-2012 333335 111114
555559 17-5-2012 444447 111115
有什么想法吗? 谢谢!
【问题讨论】:
标签: sql sql-server group-by common-table-expression