Statisque sur une table SQL
Nass2
-
doumham Messages postés 130 Statut Membre -
doumham Messages postés 130 Statut Membre -
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 :
avec cette methode je recolte aussi les doublons donc je peu faire :
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 :
ne marche pas parce que date n'est pas dans la clause group by ou dans une fonction d'agregation (erreur SQL server)
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
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
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
Configuration: Windows Server ASP SQL server 2005
3 réponses
-
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'-
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 ?)
-
-
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. -