2017-05-15 3 views
-1

Ich habe folgende Daten in meiner Datenbank.Wie wird der Zeitunterschied berechnet?

EmployeeId ServiceStart ServiceEnd  EstimateSErviceTime ServiceSuccess 
1    1:00   2:30   1:00     ?% 
2    2:00   3:00   00:45 
3    3:00   3:30   00:30 
4    12:00   1:30   1:15 
5    2:00   3:00   1:30 

Ich möchte für Mitarbeiter wie diese in Grund

var serviceSuccess = Anzahl der Interaktionen Service Erfolg berechnen, wo (Servicetime (ServiceEnd-ServiceStart) < = EstimateServiceTime)/interactionCount

ich versuche um es so zu tun:

SUM(case when AverageServiceTime < EstimateServiceTime then 1 
     else 0 
    end)/COUNT(I.Id) ServiceSuccess 
from Interaction I 

Wie ServiceSuccess zu berechnen.

+0

warum Zeile 3 (EmployeeId 3) in der Zeit zurück geht? Ist das ein Tippfehler? – Tanner

+0

@Tanner ja, es war Tippfehler, behoben. –

+0

Können Sie die erwartete Ausgabe anzeigen? –

Antwort

1

Sie sind ziemlich nah dran. Ein Problem ist die Integer-Division, die dazu neigt, die ganze Zeit 0 zu ergeben.

würde ich tun dies genauso:

select avg(case when AverageServiceTime < EstimateServiceTime then 1.0 else 0 end) as ServiceSuccess 
from Interaction I 
Verwandte Themen