2015-12-09 3 views
0

У меня есть таблица, в которой я ежедневно отслеживаю показатели сбоев. Мне нужно получить средний, последние 3 дня, каждого столбца, чтобы внести коррективы. Моя хранимая процедура -Среднее значение по SQL Server за последние три дня

Create PROCEDURE [dbo].[dfc_sp_average_loan_failure] 
AS 
BEGIN 
    SELECT TOP(3) 
      AVG(usOnlineRate) AS usOnlineAverage 
      ,AVG(usRetailRate) AS usRetailAverage 
      ,AVG(cnOnlineRate) AS cnOnlineAverage 
      ,AVG(cnRetailRate) AS cnRetailAverage 

    FROM dfc_LoanRateRecords 
END 

У меня есть четыре записи в таблице, но она продолжает давать мне среднюю первые три не последние три. Что мне нужно сделать?

ответ

3

Вам нужно

WHERE your_date BETWEEN dateadd(day, -3, maximum_date) and maximum_date 

Не TOP(3) - это даст вам ровно 3 строки.

0

Вы можете добавить заказ в конец вашего запроса.

ORDER BY date DESC 

Это даст последние три даты.

+0

Это верно, только если у него ровно 1 строка для каждой даты. – Ingaz

+0

Вы можете заменить 'date' тем, что вы хотите заказать (номер кредита, id, ect.) Когда вы используете' TOP() 'в SQL, вы всегда должны включать предложение' ORDER BY'. –

+0

@Ingaz Это правда. Это будет работать, только если у вас есть одна строка в день –

Смежные вопросы