Calculer la moyenne de la différence de temps entre deux champs de type dateheure par jour
J'ai un taxi de la base de données avec deux champs de type dateheure 'BookedDateTime" et "PickupDateTime'. Le client a besoin de connaître le temps moyen d'attente à partir du moment le taxi a été réservé à le moment le conducteur a effectivement "ramassé" le client.
Il y a un tas de lignes dans la base de données couvrant une couple de mois.
L'objectif est de parvenir à une requête qui me montre la moyenne quotidienne.
Donc un super exemple simple serait:
BookedDateTime | PickupDateTime
2014-06-09 12:48:00.000 2014-06-09 12:45:00.000
2014-06-09 12:52:00.000 2014-06-09 12:58:00.000
2014-06-10 20:23:00.000 2014-06-10 20:28:00.000
2014-06-10 22:13:00.000 2014-06-10 22:13:00.000
2014-06-09 ((-3 + 6) /2) = la moyenne est de 00:03:00.000 (3 minutes)
2014-06-10 ((5 + 0) /2) = la moyenne est de 00:02:30.000 (2,5 min)
Est-ce possible ou dois-je besoin de faire des calculs dans le code (C#)?
Tous les pointeurs serait grandement apprécié.
Temps réservé est lorsque le passager a spécifié qu'ils veulent être pris. Heure de ramassage est lorsque le chauffeur de taxi est effectivement arrivé. Donc, cela signifie que le PickupDateTime valeur peut être positive ou négative. Merci.
OriginalL'auteur ChrisCurrie | 2014-08-01
Vous devez vous connecter pour publier un commentaire.
Je pense que cela va faire :
Je pense que l'erreur que je reçois est due à la question suivante: "Pour calculer la moyenne, le serveur doit être en mesure de la somme de tous les entiers premiers, de sorte que le type de données que vous êtes en moyenne sur les besoins afin de pouvoir stocker la somme de ces valeurs, même si le retour de la réponse est dans la gamme d'un int." Il ya BEAUCOUP de lignes par jour ce sens, le nombre sera facilement être plus grand qu'un int. Est-il possible de faire défaut le calcul à utiliser un bigint à la place?
Vous pouvez convertir l'expression de type bigint avant d'appeler AVG : AVG(Convert(bigint, datediff(minute, BookedDateTime, PickupDateTime)))
Merci beaucoup. Vous avez été la première réponse et cela fonctionne parfaitement à mes besoins. Donc j'ai remis ce que la réponse choisie. Les problèmes que je rencontrais sont dus à certaines dates par défaut en 1970, année où elles ont été importées. Une fois que j'ai retiré de ces données, tout a fonctionné parfaitement. Merci beaucoup!
vous êtes les bienvenus! heureux de savoir que votre problème est résolu
OriginalL'auteur NeedAnswers
Le jour de la réservation de temps de la journée pour les rapports:
Merci encore pour votre aide. Les problèmes que je rencontrais étaient dus à certaines dates par défaut en 1970, année où elles ont été importées. Une fois que j'ai retiré de ces données, je n'ai plus reçu le message d'erreur!
OriginalL'auteur Bohemian
Veuillez essayer ceci:
Merci encore pour votre aide. Les problèmes que je rencontrais étaient dus à certaines dates par défaut en 1970, année où elles ont été importées. Une fois que j'ai retiré de ces données, je n'ai plus reçu le message d'erreur!
OriginalL'auteur Gouri Shankar Aechoor
Cela peut être fait par la constatation de la différence de chaque ligne, en en faisant la somme et en divisant par le nombre de lignes.
Dans SQLSERVER, il va ressembler à ci-dessous.
OriginalL'auteur Akalanka