Ich habe ein Problem, bei dem ich ein Skript für eine Datenbank ausführe, um den durchschnittlichen Unterschied zwischen mehreren VARCHARs zu ermitteln, die in DateTimes konvertiert werden müssen, und dann den Durchschnitt zwischen allen Ergebnissen zu ermitteln.Wie berechne ich Durchschnittswerte von Daten, die als VARCHAR aus mehreren Zeilen formatiert sind?
Mein Code ist:
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)`
Das Ergebnis, das ich bin nicht immer Sinn zu machen scheint, viel weniger es das Jahr 1900, die außerhalb meiner Parameter der Where-Klausel fällt
Hier ist :
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
Ändere ich die VARCHAR
s falsch?
Ich bezweifle, dass der Durchschnitt für Tausende von Einträgen von 2010-2015 sind alle gleich 2 Tage und 0 Stunden zu, so entweder ich mache etwas falsch oder die Daten sind schlecht.
Ich bin mir nicht sicher, was du meinst. Mein Ziel ist es, für jedes Jahr die durchschnittliche Antwortzeit in Tagen und Stunden anzuzeigen. – obizues
Ohne Beispieldaten ist es schwierig zu sehen, was passiert ... könnte es sein, dass seit 2010 alle Daten mit einem leeren Zeitstempel gespeichert sind? Das würde die Unterschiede von 0 Stunden erklären. An den Tagen, wenn das Management möchte, dass Anrufe nach 2 Tagen geschlossen werden, ist es gut möglich, dass die meisten von ihnen sind, was zu einem Durchschnitt von 2 Tagen führt (ich weiß nicht, ob AVG alles zurückgibt, außer int, wenn Sie ganzzahlig sind?) – oerkelens
Auch Ihre Tage und Stunden sind nicht Teil der gleichen Zeitspanne, obwohl Ihre Formulierung dies zu implizieren scheint. – oerkelens