Statisque sur une table SQL

Fermé
Nass2 - 5 janv. 2009 à 12:22
doumham Messages postés 116 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 13 mars 2013 - 5 janv. 2009 à 14:47
Bonjour,
J'essaye d'effectuer une requête sur une base de statistique d'un email (affichage avec de l'ASP)

le but étant de savoir combien de personne on bien reçu le mail, combien on ouvert celui-ci, combien on cliquer sur le lien... etc
la base est déjà remplis (avec des données de tests mais le remplissage j'en fais mon affaire)

le hic c'est dans le cas ou l'utilisateur ouvre 2 fois le mail. a ce moment la il apparait 2 fois dans la base de donnée (avec date et heure) dans le but d'avoir des stats au jour et voir plus précis (selon le cahier des charges) jusque la aucun problème

maintenant si je veux savoir combien de personne on ouvert le mail (dans le principe) il faut faire un :
SELECT count(id) FROM stats where action='ouvert'

avec cette methode je recolte aussi les doublons donc je peu faire :
SELECT count(id) FROM stats Group by id,action HAVING action = 'ouvert'

cette methode fonction bien mais necessite d'effectuer une boucle sur le resultat pour compté le nombre de réponse.
Maintenant si je veux rajouté le tri sur la date :
SELECT count(id) FROM stats Group by id,action HAVING action = 'ouvert' and date = ladate

ne marche pas parce que date n'est pas dans la clause group by ou dans une fonction d'agregation (erreur SQL server)
SELECT count(id) FROM stats Group by id,action,date HAVING action = 'ouvert' and date = ladate

Pourrai fonctionner mais j'ai besoin de pouvoir effectuer d'autres tests que egalité et donc dans ce cas des doublons vont de nouveau apparaitre
SELECT count(id) FROM stats WHERE action='ouvert' and date <= ladate

celle-ci ne supprime aucun doublons

Voila en gros je pense avoir était clair sur ce que je désire faire.
Le probleme en résumé : je n'arrive pas a obtenir le nombre de personne unique qui ont ouvert mon mail sachant qu'une personne peu apparaitre plusieur fois dans la base et que donc elle ne doit apparaitre qu'une seul fois...

Merci d'avance pour ceux qui m'aideront

3 réponses

doumham Messages postés 116 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 13 mars 2013 1
5 janv. 2009 à 12:33
Salut le probleme est venu lors l'envoie de la requete a la base de donnees quand l'utilisateur ouvre le mail pour la 2eme fois.
c.à.d. quand l'utilisateur ouvre pour la 2eme fois le mail, tu dois modifier les infos de cet utilisateur dans la table 'stats' et ne d'ajouter une nouvelle 'stats'
0
Dans un premier temps c'est ce que j'avais fait modifier les infos l'utilisateur réouvre le mail donc on change l'heure de lecture (ou ne rien changer si l'utilisateur est déjà dans la base)

mais j'ai besoin de faire des stats en fonction des jours et heure d'ouverture donc malheureusement les utilisateurs apparaissent forcement en doublons a moins de modifier la structure de la colonne date pour permettre l'ajout de plusieurs dates avec un délimiteur et donc de parser ensuite ce résultat (oula un peu galere non ?)
0
doumham Messages postés 116 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 13 mars 2013 1
5 janv. 2009 à 12:51
Si vous avez user_id par exemple dans la table 'stats' effectuer le requete suivante:
"SELECT distinct(user_id) from stats where action='ouvert' group by user_id";

et apres, compter le nombre des lignes envoyées par cette requete.
0
Ca y est Merci de ton aide doumham,
tu m'a fais fais découvrir DISTINCT que je ne connaissais pas et la je peu enfin faire fonctionner mon outil

SELECT COUNT(DISTINCT(idParadox)) FROM stats WHERE (action = 'ouvert' and Date <= ladate
0
doumham Messages postés 116 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 13 mars 2013 1
5 janv. 2009 à 14:47
Oui c'est ca aussi. Bon courrage.
0