IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Modifier une requête


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    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...

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Utilisez count distinct.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    j'ai modifié le SELECT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier une requête pour mysql 4.0.18
    Par lina01 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/11/2006, 12h38
  2. [vb]modifier une requéte
    Par adrix26 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 16/06/2006, 17h52
  3. Modifier une requête par des données différente
    Par leloup84 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/03/2006, 15h23
  4. Modifier une requête dans toutes ces tables...
    Par SnickeursMan dans le forum Requêtes
    Réponses: 6
    Dernier message: 14/12/2005, 14h08
  5. Modifier une requête en fonction de boutons d'option
    Par JahRastafari dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo