У меня проблема, когда я запускаю скрипт против базы данных, чтобы получить среднее различие между несколькими VARCHAR, которые необходимо преобразовать в DateTimes, а затем взять среднее значение между всеми результатами.Как рассчитать средние даты, отформатированные как VARCHAR из нескольких строк?
Мой код:
SELECT YEAR(b.DateAcknow),AVG(datediff(dd,convert(datetime,b.DateAssign),
convert(datetime,b.DateResolv))) as DayAverage,
AVG(datediff(hh,convert(datetime,b.TimeAcknow),
convert(datetime,b.TimeResolv))) as HourAverage
FROM table AS b
WHERE (x = y)
AND YEAR(DateResolv) >= 2006
AND YEAR(DateResolv) < 2016
AND b.resolution <>''
GROUP BY YEAR(b.DateAcknow)
ORDER BY YEAR(b.DateAcknow)`
В результате я получаю, кажется, не имеет смысла, гораздо меньше, она включает в себя 1900, которая выходит за пределы моих параметров где п
Здесь :
NULL 42 NULL
1900 0 12
2006 7 -5
2007 6 1
2008 7 1
2009 4 1
2010 2 0
2011 2 0
2012 2 0
2013 2 0
2014 2 0
2015 2 0
Я преобразовываю VARCHAR
s неправильно?
Сомневаюсь, что в среднем за тысячи записей в 2010-2015 годах все равно 2 дня и 0 часов, так что либо я делаю что-то неправильно, либо данные плохие.
Я не уверен, что вы имеете в виду. Мое намерение состоит в том, чтобы отображать на каждый год, что среднее время отклика в днях и часах. – obizues
Без примеров данных трудно понять, что происходит ... может быть, с 2010 года все даты хранятся с пустой меткой времени? Это объясняет разницу в 0 часов. Что касается дней, если менеджмент хочет, чтобы звонки закрывались через 2 дня, вполне возможно, что большинство из них, что приводит к среднему из двух дней (я не знаю, вернет ли AVG что-либо, кроме int, если вы усредняете целые числа?) – oerkelens
Кроме того, ваши дни и часы не входят в один и тот же промежуток времени, хотя ваша фразировка, по-видимому, подразумевает это. – oerkelens