evtl. hab ich ja auch was übersehen, aber aus meiner Sicht ist das Statistikmodul welches OTRS mitbringt eher schlecht. Was liegt näher als ein eigens (evtl. PHP basiertes) externes Modul zu schaffen, was dieverse Statistiken auswirft.
Selber habe ich derzeit genug Projekte, habe also so recht keine Zeit um ein solches Script zu basteln. Werde aber früher oder später nicht drum rum kommen, da bei mir die Anforderung im Raum steht.
Ich habe mir mal das Script von schocker schicken lassen .... vielen Dank dafür erst mal!!!
Leider kann ich das so nicht benutzen, da ein Teil der SQL-Abfrage sich auf Dinge bezieht, die wir so nicht nutzen.
Also habe ich mir schon mal so Gedanken gemacht. Ein Wunsch ist, die Bearbeitungszeit pro Ticket auszugeben.
Folgendes Überlgegung haben auch zu einem Ziel geführt:
- Zu jedem Ticket gibt es ja eine umfangreiche History (Tabelle: ticket_history)
- Zu jedem Eintrag gibt es ein History-Typ Eintrag und ein "create_time" des Datensatzes
- Ein Ticket kann verschiedene Statusmerkmal in seinem Leben haben ... allen voran aber mindst. "offen" und "closed".
- Jede OTRS Installation wird sicher eigene Statusmerkmale definieren mit ganz unterschiedlichen Bedeutungen. Damit kann das so direkt nicht für eine Auswertung benutzt werden.
- Jedes Statusmerkmal hat aber einen Statustyp ... und diese sind fest vorgegeben (oder irre ich mich da)
- Ein Ticket ist immer dann NICHT mehr in Bearbeitung, wenn es in den "warten" Zustand gesetzt wurde oder gar geschlossen wurde
- Ein Ticket ist immer dann wieder in Bearbeitung, wenn es "new" ist oder "open"
- Aus der History müsste nun zu jedem Ticket die Zeitdifferenz zwischen "new"/"open" und dem nächsten Eintrag für "wartend"/"geschlossen" errechnet werden.
Code: Select all
SELECT t.id, t.tn,(
SELECT SUM(UNIX_TIMESTAMP(
(SELECT th2.create_time
FROM ticket_history AS th2, ticket_state AS ts2, ticket_state_type AS tst2
WHERE th2.ticket_id = t.id AND th2.state_id = ts2.id AND ts2.type_id = tst2.id AND tst2.id IN (3,4,5)
AND th2.history_type_id = 27
AND th2.id > th.id
ORDER BY th2.id ASC
LIMIT 1))
- UNIX_TIMESTAMP(th.create_time))
FROM ticket_history AS th, ticket_state AS ts, ticket_state_type AS tst
WHERE th.ticket_id = t.id AND th.state_id = ts.id AND ts.type_id = tst.id AND tst.id IN (1,2)
AND (th.history_type_id = 27 OR th.history_type_id = 1)
) AS work_time
FROM ticket AS t
Evtl. mag das ja mal jemand von Euch testen oder hat gar eine Idee wie man die SQL-Syntax besser aufbauen kann. Bin im Grunde SQL-Anfänger.
OK, dann hoffe ich mal auf (auch positive ) Kritiken.
Andreas