我有下表。
DECLARE @TBL_RESULT Table
(
ID varchar(10),
CreateDate DateTime,
PEOPLE_CODE_ID varchar(10),
CONVERSION_DATE DateTime,
CAMPUS varchar(20),
DAYS_TOOK int
);
此表记录了从 2013 年 1 月 1 日至今已接收和转换的所有潜在客户的记录。
我最初需要找到转换过去 10 周内到达的潜在客户所需的中位数时间并按校园分组我能够使用下面的 SQL 查询做到这一点
WITH CTE_RESULT
AS ( SELECT *
FROM @TBL_RESULT
WHERE CreateDate > DATEADD(WEEK, -10, GETDATE())
)
SELECT Campus ,
AVG(DAYS_TOOK) AS MedianTime
FROM ( SELECT CAMPUS ,
Days_Took ,
ROW_NUMBER() OVER ( PARTITION BY Campus ORDER BY Days_Took ASC ) AS AgeRank ,
COUNT(*) OVER ( PARTITION BY CAMPUS ) AS CampusCount
FROM CTE_RESULT
) x
WHERE x.AgeRank IN ( x.CampusCount / 2 + 1, ( x.CampusCount + 1 ) / 2 )
GROUP BY x.Campus
我现在需要在图表上绘制这种趋势,即查找前 10 周的桶记录并在折线图上绘制中值 - 每条线都是一个校园。(按校区分组)
光标是我唯一的选择吗?从 1 月 1 日开始,我将在其中找到前 10 周的线索,执行上述 SQL 查询以获取中位数,将其推送到临时表,然后找到接下来的 10 周,依此类推。
或者有什么更好的我可以做的吗?