Приведенный ниже код возвращает количество разрешенных заявок и количество открытых заявок за период (период ГГГГ, WW) на определенное количество дней назад. Например, если @NoOfDays равно 7:
разрешено | открыт | неделя | год | период
56 | 30 | 13 | 2012 | 2012, 13
237 | 222 | 14 | 2012 | 2012, 14
«разрешенные» и «открытые» показаны на линиях (y) за период (x). Я хотел бы добавить еще один столбец «тренд», который будет возвращать число, которое при построении графика за период будет линией тренда (простая линейная регрессия). Я хочуиспользовать оба набора значений как один источник данных для тренда.
Вот код, который у меня есть:
SELECT a.resolved, b.opened, a.weekClosed AS week, a.yearClosed AS year,
CAST(a.yearClosed as varchar(5)) + ', ' + CAST(a.weekClosed as varchar(5)) AS period
FROM
(SELECT TOP (100) PERCENT COUNT(DISTINCT TicketNbr) AS resolved, { fn WEEK(date_closed) } AS weekClosed, { fn YEAR(date_closed) } AS yearClosed
FROM v_rpt_Service
WHERE (date_closed >= DateAdd(Day, DateDiff(Day, 0, GetDate()) - @NoOfDays, 0))
GROUP BY { fn WEEK(date_closed) }, { fn YEAR(date_closed) }) AS a
LEFT OUTER JOIN
(SELECT TOP (100) PERCENT COUNT(DISTINCT TicketNbr) AS opened, { fn WEEK(date_entered) } AS weekEntered, { fn YEAR(date_entered)
} AS yearEntered
FROM v_rpt_Service AS v_rpt_Service_1
WHERE (date_entered > = DateAdd(Day, DateDiff(Day, 0, GetDate()) - @NoOfDays, 0))
GROUP BY { fn WEEK(date_entered) }, { fn YEAR(date_entered) }) AS b ON a.weekClosed = b.weekEntered AND a.yearClosed = b.yearEntered
ORDER BY year, week
Редактировать:
Согласно serc.carleton.edu/files/mathyouneed/best_fit_line_dividing.pdf, кажется, что я хочу разбить данные пополам, а затем вычислить среднее . Затем мне нужно найти линию наилучшего соответствия и использовать наклон и точку пересечения с осью y для расчета значений, необходимых для возврата в «тренде», используя y = mx + b
?
Я знаю, что это очень возможно в SQL, однако программа, в которую я вставляю SQL, имеет ограничения на то, что я могу сделать.
Красные и синие точки — это числа, которые я возвращаю сейчас (открытые и разрешенные). Мне нужно вернуть значение для каждого периода в «тренде», чтобы создать фиолетовую линию.(это изображение является гипотетическим)