J'ai un problème en cours d'exécution d'un script sur une base de données pour obtenir la différence moyenne entre plusieurs VARCHAR qui doivent être convertis en DateTimes, puis prendre la moyenne entre tous les résultats.Comment calculer des moyennes de dates au format VARCHAR à partir de plusieurs lignes?
Mon code est:
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)`
Le résultat que je reçois ne semble pas logique, beaucoup moins il comprend 1900 qui ne relève pas de mes paramètres de la clause where
Ici, il est :
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
Est-ce que je convertis le VARCHAR
mal?
Je doute que la moyenne pour des milliers d'entrées de 2010-2015 soit la même chose 2 jours et 0 heures aussi, donc soit je fais quelque chose de mal ou les données sont mauvaises.
Je ne suis pas sûr de ce que vous voulez dire. Mon intention est d'afficher pour chaque année quel est le temps de réponse moyen en jours et en heures. – obizues
Sans données d'exemple, il est difficile de voir ce qui se passe ... pourrait-il être que depuis 2010 toutes les dates sont stockées avec un horodatage vide? Cela expliquerait les différences de 0 heure. En ce qui concerne les jours, si la direction veut que les appels soient fermés après 2 jours, il est possible que la plupart d'entre eux aboutissent à une moyenne de 2 jours (je ne sais pas si AVG renvoie autre chose que int – oerkelens
En outre, vos jours et heures ne font pas partie du même laps de temps, bien que votre phrasé semble impliquer que. – oerkelens