Syntaxe d'une certaine requete sql

Fermé
fred - 23 avril 2009 à 10:51
traben_phoenix Messages postés 14 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 24 avril 2009 - 23 avril 2009 à 14:32
Bonjour,

je ne connais pas la syntaxe de cette requête sql :

j'ai une table, qui contient un enregistrement pour chaque page affichée sur le site, avec l'ip du visiteur entres autres.
Maintenant j'aimerais faire la moyenne du nombre de page affichées par visiteur pour les 5000 derniers visiteurs par exemple...

l'idée ça serait de faire un

select count(id) from matable order by distinct ip desc limit 5000

mais
1) je n'ai aucune idée de la syntaxe à utiliser
2) ça me parait lourd car il faut ensuite faire une boucle qui additionne les 5000 résultats pour ensuite diviser par 5000....

Avez vous une meilleure méthode ???

merci !!

Fred
A voir également:

3 réponses

traben_phoenix Messages postés 14 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 24 avril 2009 1
23 avril 2009 à 11:26
Hey ! salut !

Moi, je ferais ca en plusieurs requetes avec du php :

"select distinct ip from matable"

resultat de la requete dans la variable $ip

Pour chaque ip :
"select count(*) from matable where ip='$ip' limit 5000"
calcul de ta moyenne

++
0
en fait c'est ce que j'avais fait,
(au passage le limit 5000 est dans la première requete !)
mais la page met extrêmement longtemps à s'afficher... (voire ne s'affiche pas)... d'un autre côté on fait 5000 requetes c'est peut être normal !
0
traben_phoenix Messages postés 14 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 24 avril 2009 1
23 avril 2009 à 13:53
OK, as-tu essayé avec un GROUP BY dans la requete ?

SELECT count(*) FROM matable GROUP BY ip ORDER BY id DESC LIMIT 0,5000

J'ai testé sur une petite table mysql(3500 lignes), ca marche, et sur une grosse table oracle (2millions de lignes), j'ai le résultat en 1.7 sec, mais sans le LIMIT 0,5000. d'ailleur, pour cette requete, oracle me rejete dès que je rajoute le limit !
0
traben_phoenix Messages postés 14 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 24 avril 2009 1
23 avril 2009 à 14:32
précision pour le limit sous oracle -> oracle ne prend pas en compte cette fonction !


Mais la fonction avg permet de faire une moyenne, si ca peut t'être utile --> https://sqlpro.developpez.com/cours/sqlaz/fonctions/

++

Francois
0

Discussions similaires