2012-10-04 11 views
1

J'ai fait une requête MSSQL qui calcule l'adresse IP totale unique et le total des enregistrements IP pour les 30 derniers jours. Maintenant, j'ai du mal à calculer le nombre moyen de pages visitées par jour et le nombre moyen de visiteurs uniques quotidiens. J'ai essayé d'utiliser AVG mais il me donne un message d'erreur disant "Le type de données d'opérande varchar n'est pas valide pour l'opérateur avg."
Toute aide est grandement appréciée.MS SQL requête pour calculer les visiteurs uniques mensuels moyens

+1

Vous auriez besoin de regrouper sur un intervalle de date appropriée ... –

+0

'varchar' ne peut pas être le type de données moyennées vous besoin d'utiliser 'int' ou' bigint' –

Répondre

3
SELECT AVG(HitCount) as AverageHits, 
    AVG(UniqueHitCount) As AverageUniqueHits 
FROM 
(
SELECT COUNT(IPAddress) as HitCount, 
     COUNT(DISTINCT IPAddress) as UniqueHitCount, 
     DATEDIFF(d, GETDATE(), DateTime) as Day 
FROM tblHitCounter 
WHERE DateTime > GETDATE() - 30 
GROUP BY DATEDIFF(d, GETDATE(), DateTime) 
) sub 
+0

Ça a marché! je vous remercie beaucoup pour votre aide. Iv passe de nombreuses heures à essayer de Google et de comprendre cette chose. – crashtestxxx

+1

Je suis content que cela ait fonctionné pour vous ... J'ai dû faire beaucoup de rapports SQL au cours des années: D – BlakeH

2

Vous devez groupe ce jour, puis faire les moyennes:

select avg(totalPageHits) as avgDailyTotalPageHits, 
     avg(totalVisitors) as avgDailyTotalVisitors 
from (SELECT cast(DateTime as date) as thedate, 
      count(IPAddress) AS totalPageHits, 
      count(DISTINCT IPAddress) AS totalVisitors, count(DateTime) as cnt 
     FROM recordTable 
     WHERE DateTime > GETDATE()-30 
     group by cast(DateTime as date) 
    ) t 
+0

Vôtre est la bonne réponse - j'avais un cerveau-pet: avg (count (...)) serait toujours égal à ce nombre, si cela a fonctionné. Les fonctions agrégées ne peuvent pas être imbriquées. – BryanH

+0

Pouvez-vous me dire également ce que signifie {t}. Parce que j'obtiens une erreur disant "Aucun nom de colonne n'a été spécifié pour la colonne 4 de 't'." Merci de votre aide. – crashtestxxx

+0

@GordonLinoff - (Re vous commentez sur la réponse maintenant supprimée ..) Fyi, ColdFusion juste des mains SQL hors de votre base de données. Les opérations ainsi prises en charge dépendent de votre type de base de données et de votre pilote, comme d'habitude. – Leigh

Questions connexes