Создание линии тренда из набора данных SQL

Приведенный ниже код возвращает количество разрешенных заявок и количество открытых заявок за период (период ГГГГ, 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, имеет ограничения на то, что я могу сделать.

Красные и синие точки — это числа, которые я возвращаю сейчас (открытые и разрешенные). Мне нужно вернуть значение для каждого периода в «тренде», чтобы создать фиолетовую линию.(это изображение является гипотетическим)

Hypothetical Chart

6
задан PRNDL Development Studios 9 April 2012 в 16:32
поделиться