2010-12-13 58 views
0

J'essaie d'obtenir une requête MySQL pour obtenir la quantité moyenne d'appareils uniques à partir d'une table qui enregistre les adresses mac, pour chaque jour de la semaine dans un mois et une année donnés . Jusqu'à présent, j'ai cela pour compter tous les appareils.MySQL Moyenne x unique pour le jour de la semaine

SELECT DAYNAME(date_time) dow, 
DAYOFWEEK(date_time) day_num, 
COUNT(DISTINCT (mac)) as devices 
FROM detected_devices 
WHERE client_id = 11 
AND venue_id = 1 
AND EXTRACT(YEAR FROM date_time) = 2010 
AND EXTRACT(MONTH FROM date_time) = 12 
GROUP BY dow 
ORDER BY day_num 

Ceci m'obtient le nombre total d'appareils mais je ne peux pas sembler utiliser la fonction AVG aussi. J'ai essayé cette ligne à la place mais ai l'erreur # 1111 - Utilisation invalide de la fonction de groupe quand je fais.

AVG(COUNT(DISTINCT (mac))) as devices 
+0

Avez-vous essayé 'AVG (DISTINCT (mac)) comme périphériques'? – jgauffin

+0

Ah, ça donne des résultats oui, merci. Cependant, les résultats semblent un peu étrange .. par exemple - Lundi = 19291096024292.0804 appareils! Lorsque la fonction de comptage ci-dessus a renvoyé 52 – ajay87

+0

, je suppose que c'est en fait la moyenne de chaque adresse mac distincte qui donnerait ce type de valeur. J'ai besoin de l'AVG d'un COUNT de DISTINCT macs vraiment – ajay87

Répondre

0

Je pense que c'est parce que vous ne pouvez pas GROUP BY un alias. Essayez plutôt GROUP BY DAYOFWEEK(date_time).

+0

Merci pour la suggestion, mais le GROUP BY semble fonctionner correctement. C'est plus la partie AVG qui ne l'est pas. – ajay87