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

MS SQL Server Discussion :

[SQL 2005] Problème pour une requête SELECT


Sujet :

MS SQL Server

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut [SQL 2005] Problème pour une requête SELECT
    Bonjour

    Voici le problème :
    J'ai une table "Chat" avec 2 colonnes, "Pseudo" et "message". Lorsque qu'une personne laisse un message, une ligne est ajoutée à la table. Par exemple, la table est comme ceci :
    -------------------------------------------
    Pseudo, Message
    -------------------------------------------
    "Robert", "salut"
    "Rémi", "ava ?"
    "Robert", "oui"
    "Susan", "coucou"

    Ce que je voudrais, c'est établir des statistiques en faisant une requête qui me retourne ceci :
    -------------------------------------------
    Pseudo, Nb_msg, Percentage
    -------------------------------------------
    "Robert", 2, 100%
    "Rémi", 1, 50%
    "Susan", 1, 50%

    Vous voyez ? J'y suis arrivé, mais en faisant une usine à gaz... alors si qqn a une idée pour une tite requête simple
    Mici bien

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    essaie ceci :
    declare @nb_tot int
    select @nb_tot = count(*) from Chat
    select
    pseudo,
    count(*) as Nb_msg,
    (count(*)/@nb_tot) *100 as percentage
    from
    Chat
    group by
    pseudo
    order by
    pseudo

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Coucou

    C'est presque ça. En rajoutant un cast à ta requête, j'obtiendrais :
    -------------------------------------------
    Pseudo, Nb_msg, Percentage
    -------------------------------------------
    "Robert", 2, 50%
    "Rémi", 1, 25%
    "Susan", 1, 25%

    Seulement, je voudrais obtenir ça :
    -------------------------------------------
    Pseudo, Nb_msg, Percentage
    -------------------------------------------
    "Robert", 2, 100%
    "Rémi", 1, 50%
    "Susan", 1, 50%

    La différence, c'est que 100% correspond au nb de messages du pseudo qui en a le plus posté, et non au nombre total de messages.
    Voici, mon code (qui fonctionne) :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
      -- determine nb msg max among members
      CREATE TABLE #MSG_PER_MEMBER
      (
        pseudo varchar(64),
        nb_msg int
      )
     
      INSERT INTO #MSG_PER_MEMBER
      SELECT pseudo, count(id_chat) as nb_msg FROM chat GROUP BY pseudo
     
      DECLARE @nb_msg_member_max float
      SET @nb_msg_member_max = cast((SELECT max(nb_msg) FROM #MSG_PER_MEMBER) as float)
     
      -- perform select
      SELECT
        pseudo, 
        count(*) as nb_messages,
        round((count(*) / @nb_msg_member_max), 2)  as [percent]
      FROM 
        chat
      GROUP BY
        pseudo
      ORDER BY
        nb_messages desc
     
      DROP TABLE #MSG_PER_MEMBER
    Mais je le trouve hyper lourd mon code
    Merci en tout cas de ton aide, et si qqn a une idée

Discussions similaires

  1. Problème pour une requête SQL
    Par bombers dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2015, 13h09
  2. [MySQL] Retour de valeur pour une requête "select"
    Par Truebison dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/09/2008, 16h57
  3. [MS*SQL 2005] Arrêt d'une requête au bout de n secondes
    Par SINDIZ dans le forum Développement
    Réponses: 4
    Dernier message: 30/05/2008, 17h57
  4. [MS*SQL 2005] Arrêt d'une requête au bout de n secondes
    Par SINDIZ dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/03/2008, 17h48
  5. [SQL Server]Problème avec une requête récursive
    Par evans dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 20h16

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