Я использую этот запрос, чтобы получить среднюю дату:
CONVERT(DATETIME, AVG(CONVERT(FLOAT, ChargeOffDate))) as [Average C/O Date]
Что правильно дает мне дату '2003-08-12 14: 17: 22.103'.
Когда я использую этот запрос, чтобы получить средневзвешенную дату
CONVERT(DATETIME, SUM(CONVERT(FLOAT, ChargeOffDate) * FaceValue) / SUM(FaceValue))
Я получаю дату типа «1938-10-19 21: 28: 48.000», которая далека от средней даты. Я чувствую, что это простая вещь, и мне не хватает чего-то критического, но маленького.
Пример:
declare @temp table (value datetime, [weight] money)
insert into @temp values (NULL,8850.00)
insert into @temp values (NULL,137.91)
insert into @temp values ('2006-01-15',221.13)
insert into @temp values ('2006-10-15',127.40)
insert into @temp values ('2001-07-31',551.44)
insert into @temp values ('1997-10-12',4963.41)
insert into @temp values ('2006-03-15',130.36)
insert into @temp values ('2005-01-07',1306.31)
SELECT
CONVERT(DATETIME, AVG(CONVERT(FLOAT, value))) as [Avg Date],
CONVERT(DATETIME, SUM(CONVERT(FLOAT, value) * [weight]) / SUM([weight])) as [Weighted Avg Date]
FROM @temp
Это дает «2003-11-25 20: 00: 00.000» в качестве средней даты и «1944-10-13 10: 52: 10.573» в качестве средневзвешенной. Без нуля это дает '1999-12-02 17: 10: 51.087'. Возможно, моя проблема в том, что нулевые значения сбрасывают мои вычисления.