2017-08-10 1 views
0

Je cherche à générer un tableau indiquant le nombre moyen de jours entre une recommandation et un rendez-vous, par type de client. Mon code SQL ressemble à ceci à l'heure actuelle:Nombre moyen de jours divisé par type de client

select CustomerID, CustomerType, ReferralDate, AppointmentDate, 
     Datediff(d, ReferralDate, AppointmentDate) as [Ref to App (Days)] 
From Referrals 

Le code ci-dessus génère une liste du nombre de jours de référence à la nomination pour chaque client. Ce dont j'ai besoin, c'est d'une ligne par CustomerType (il y a actuellement 7 types de clients dans ma base de données) et ensuite d'un champ appelé [Average days from ref to app]. Cela me laissera avec sept lignes, dont chacune contient le nombre moyen de jours de référence à rendez-vous. Je sais que je peux utiliser la fonction AVG, mais je n'arrive pas à la faire fonctionner comme je le souhaite. La somme que je dois utiliser sera quelque chose comme ceci: (Nombre total de jours par CustomerType)/(Total CustomerID par CustomerType) = Nombre moyen de jours par type de client

Quelqu'un a-t-il des suggestions?

+1

Ajoutez des exemples de données de table et le résultat attendu - sous forme de texte formaté. Étiquetez également les dbms que vous utilisez. – jarlh

Répondre

1

Je pense que cette requête devrait faire ce que vous voulez:

select r.CustomerType, 
     avg(1.0 * Datediff(day, r.ReferralDate, r.AppointmentDate)) as [Ref to App (Days)] 
from Referrals r 
group by r.CustomerType; 

Fondamentalement, vous avez juste besoin d'un group by et de supprimer les colonnes étrangères.

+0

Merci Gordon Linoff, cela fonctionne parfaitement! Je ne suis pas habitué à utiliser des moyennes dans SQL - je les fais normalement exceller. J'apprécie vraiment l'aide. – Jimmy