Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 02/12/2010, 18h41   #1
Invité de passage
 
Inscription : juin 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 8
Points : 2
Points : 2
Par défaut Modifier une requête

bonjour, j'ai besoin de modifier la requête ci-dessous qui permet de générer des statistiques de visites d'utilisateurs (Visitor_Id) par mois par groupe de travail et thématique:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT     
	Thematique.Title AS Thematique, 
	Workgroup.Title AS [Groupes de travail], 
	DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS nvarchar) AS logDate, 
	COUNT(Visite.DateTime) AS Count
FROM Visite 
	INNER JOIN Workgroup ON Visite.Workgroup_Id = Workgroup.Id 
	INNER JOIN Workgroup_Themes_WorkgroupTheme ON Workgroup.Id = Workgroup_Themes_WorkgroupTheme.Id 
	INNER JOIN WorkgroupTheme ON Workgroup_Themes_WorkgroupTheme.Id2 = WorkgroupTheme.Id 
	INNER JOIN Thematique ON Thematique.Id = WorkgroupTheme.Thematique_Id
	INNER JOIN [User] u ON u.Id = Visite.Visitor_Id
WHERE u.DisplayName <> 'sys_moss'
GROUP BY Thematique.Title, Workgroup.Title, DATENAME(yyyy, Visite.DateTime), MONTH(Visite.DateTime)
ORDER BY Thematique, [Groupes de travail], DATENAME(yyyy, Visite.DateTime) DESC, MONTH(Visite.DateTime) DESC
il faudrait qu'elle ne ramène qu'une seule fois un utilisateur par mois, si quelqu'un a une idée, merci d'avance
Evilduky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 19h46   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 516
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 516
Points : 3 957
Points : 3 957
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT     
	Thematique.Title AS Thematique, 
	Workgroup.Title AS [Groupes de travail], 
	Visite.Visitor_Id,
	DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS nvarchar) AS logDate, 
	COUNT(Visite.DateTime) AS Count
FROM Visite 
	INNER JOIN Workgroup ON Visite.Workgroup_Id = Workgroup.Id 
	INNER JOIN Workgroup_Themes_WorkgroupTheme ON Workgroup.Id = Workgroup_Themes_WorkgroupTheme.Id 
	INNER JOIN WorkgroupTheme ON Workgroup_Themes_WorkgroupTheme.Id2 = WorkgroupTheme.Id 
	INNER JOIN Thematique ON Thematique.Id = WorkgroupTheme.Thematique_Id
	INNER JOIN [User] u ON u.Id = Visite.Visitor_Id
WHERE u.DisplayName <> 'sys_moss'
GROUP BY Thematique.Title, Workgroup.Title, Visite.Visitor_Id, DATENAME(yyyy, Visite.DateTime), MONTH(Visite.DateTime)
ORDER BY Thematique, [Groupes de travail], Visite.Visitor_Id, DATENAME(yyyy, Visite.DateTime) DESC, MONTH(Visite.DateTime) DESC
Si ce bout de code modifié ci-dessus répond parfaitement à votre attente, je vous conseillerais d'ouvrir un tuto sur le SQL.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h55   #3
Invité de passage
 
Inscription : juin 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 8
Points : 2
Points : 2
j'ai testé ta requête, je n'ai pas besoin du Visitor_Id, il faut juste qu'il ne soit compté qu'une seule fois par mois dans le count

par ex, j'ai :

theme1 groupe_travail1 2010-10 10
theme1 groupe_travail1 2010-7 1

hors voici ce que je trouve pour theme1 et groupe_travail1:
JUILLET
2010-07-06 13:19:22.000 user256

OCTOBRE
2010-10-07 12:09:59.000 user256
2010-10-07 12:25:23.000 user256
2010-10-07 12:25:37.000 user256
2010-10-07 12:26:01.000 user256
2010-10-07 12:26:06.000 user256
2010-10-07 12:26:10.000 user256
2010-10-07 12:26:12.000 user256
2010-10-07 12:26:16.000 user256
2010-10-07 12:26:45.000 user256
2010-10-07 12:27:44.000 user256

actuellement le count de la requête en compte 10 pour le moins d'octobre alors qu'il devrait en compter qu'une seule car c'est toujours le meme user...
Evilduky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h01   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 468
Points : 10 468
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Utilisez count distinct.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h51   #5
Invité de passage
 
Inscription : juin 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 8
Points : 2
Points : 2
j'ai modifié le SELECT:
Code :
COUNT(DISTINCT Visite.DateTime) AS Count
si c'est ça que tu voulais faire Waldar ça me retourne le même résultat qu'avant
Evilduky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h55   #6
Invité de passage
 
Inscription : juin 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 8
Points : 2
Points : 2
j'ai fait une modif dans la requête, ça à l'air de marcher:

SELECT
Thematique.Title AS Thematique,
Workgroup.Title AS [Groupes de travail],
DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS nvarchar) AS logDate
, COUNT(DISTINCT Visite.Visitor_Id) AS Count
FROM Visite
INNER JOIN Workgroup ON Visite.Workgroup_Id = Workgroup.Id
INNER JOIN Workgroup_Themes_WorkgroupTheme ON Workgroup.Id = Workgroup_Themes_WorkgroupTheme.Id
INNER JOIN WorkgroupTheme ON Workgroup_Themes_WorkgroupTheme.Id2 = WorkgroupTheme.Id
INNER JOIN Thematique ON Thematique.Id = WorkgroupTheme.Thematique_Id
INNER JOIN [User] u ON u.Id = Visite.Visitor_Id
WHERE u.DisplayName <> 'sys_moss'
GROUP BY Thematique.Title, Workgroup.Title, DATENAME(yyyy, Visite.DateTime), MONTH(Visite.DateTime), Visite.Visitor_Id
ORDER BY Thematique, [Groupes de travail], DATENAME(yyyy, Visite.DateTime) DESC, MONTH(Visite.DateTime) DESC
Evilduky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 12h07   #7
Invité de passage
 
Inscription : juin 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 8
Points : 2
Points : 2
j'avais un bug sur ce que j'ai posté car les mois étaient récupérés en double si il y avait plusieurs utilisateurs dans une même mois, pour ceux que ça intéresse, voici la bonne requête:

j'ai viré le group by Visitor_Id + plus modif sur la date du group by

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT     
	Thematique.Title AS Thematique, 
	Workgroup.Title AS [Groupes de travail], 
	DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS NVARCHAR) AS logDate, 
	COUNT(DISTINCT Visite.Visitor_Id) AS Count
FROM Visite 
	INNER JOIN Workgroup ON Visite.Workgroup_Id = Workgroup.Id 
	INNER JOIN Workgroup_Themes_WorkgroupTheme ON Workgroup.Id = Workgroup_Themes_WorkgroupTheme.Id 
	INNER JOIN WorkgroupTheme ON Workgroup_Themes_WorkgroupTheme.Id2 = WorkgroupTheme.Id 
	INNER JOIN Thematique ON Thematique.Id = WorkgroupTheme.Thematique_Id
	INNER JOIN [User] u ON u.Id = Visite.Visitor_Id
WHERE u.DisplayName <> 'sys_moss'
GROUP BY Thematique.Title, Workgroup.Title, (DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS NVARCHAR))--, Visite.Visitor_Id
ORDER BY Thematique, [Groupes de travail], (DATENAME(yyyy, Visite.DateTime) + '-' + CAST(MONTH(Visite.DateTime) AS NVARCHAR)) DESC
Evilduky 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 12h59.


 
 
 
 
Partenaires

Hébergement Web