Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2011, 18h21   #1
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations forums :
Inscription : avril 2011
Messages : 2
Points : 0
Points : 0
Par défaut Requete regroupement avec critere

Bonjour,

J'ai un petit problème avec un requête Mysql. Il me semble que j'aurais besoin de sous-requête ou de quelque chose du genre.

Voici ma table hit qui contient des informations sur la fréquentation de mon site.

Code :
1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `hit` (
  `IDHit` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `RefIDProfile` bigint(20) UNSIGNED NOT NULL,
  `Address` varchar(100) NOT NULL,
  `UTCTime` bigint(30) DEFAULT NULL,
  PRIMARY KEY (`IDHit`)
)
Ce que j'aimerais ce serait de savoir le compte de différent RefIDProfile regroupé par Address pour les 5 dernières secondes, les 5 dernières minutes, les 5 dernières heures.

La requête :
Code :
1
2
3
4
SELECT Adress , count(DISTINCT RefIDProfile) AS CountRefProfile 
FROM hit 
WHERE RefIDProfile <> 0 
GROUP BY Adress;
me donne le compte des différents profiles par address mais comment fait-on pour avoir ce compte réparti en fonction de différents intervalles de temps ?

Je voudrais un tableau du genre :
Citation:
Address / 5sec / 5min / 5hrs
index.php / 30 / 100 / 150
login.php / 15 / 30 / 45
AndreJoe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 19h20   #2
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations forums :
Inscription : avril 2011
Messages : 2
Points : 0
Points : 0
Par défaut Je me réponds

Je suis pas certain que c'est le meilleur chemin mais ça semble fonctionner:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT Adress, CountRefProfile, sum(OneMinute), sum(FiveMin) , sum(FiveHours) FROM (
	SELECT Adress , 
		count(DISTINCT RefIDProfile) AS CountRefProfile ,
		max(UTCTime) AS MaxTime,
		IF(max(UTCTime) >= UNIX_TIMESTAMP() - (60),1,0) AS OneMinute ,
		IF(max(UTCTime) >= UNIX_TIMESTAMP() - (60 * 5),1,0) AS FiveMin ,
		IF(max(UTCTime) >= UNIX_TIMESTAMP() - (60 * 60 * 5),1,0) AS FiveHours
		FROM hit AS t
		WHERE RefIDProfile <> 0 
		GROUP BY Adress
	) AS t1
GROUP BY Adress;
Note : C'est incroyable comment ça fait du bien juste de parler de nos problèmes. Merci à tout ceux qui sont venus m'aider, me lire et m'écouter. Merci beaucoup. Merci spécialement à ceux qui se risquent pour des réponses. Moi-même, je devrais le faire plus souvent.

Au plaisir,

André
AndreJoe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h20.


 
 
 
 
Partenaires

Hébergement Web