Selectionner des moyennes par serveurs dont le nombre peu varier

sriwLiw -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonsoir,

J'ai une table constituée de telle manière : idServer | datetime | valeur1 | valeur2
Je voudrai que la réponse à la requête soit comme ceci :
datetime | valeur1\(valeur1+valeur2) pour serveurA | valeur1\(valeur1+valeur2) pour serveurB | ... pour autant de serveur qu'il existe sur la table.

Je me suis bien creusé la tête mais j'arrive pas à la formuler..

Quelqu'un peut m'aider ?

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour
    as tu regardé du côté de GROUP BY ?

    0
    1. sriwLiw
       
      Mais justement comment créer autant de sortie que de type de serveur différent par tranche de temps, j'arrive pas à formuler cela..
      0
    2. sriwLiw
       
      La seule piste que j'ai pour l'instant c'est faire une première requête pour savoir les idServer qui existe.. mais ça m'arrangerait bien si j'ai la réponse que je veux en une seule fois..
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    comment créer autant de sortie que de type de serveur différent par tranche de temps,

    Ta requête .... avec un Group By .. va te sortir autant de lignes que tu auras de serveur distinct....

    As tu essayé au moins ?

    Ca donnerait quelque-chose du genre :
    SELECT datetime 
               , SUM(valeur1)\(SUM(valeur1)+SUM(valeur2)) as Moyenne
    FROM tatable
    GROUP BY serveur,datetime
    


    0
    1. sriwLiw
       
      Mais là ce que j'aurai c'est une moyenne générale sur les deux serveurs, moi ce que je veux c'est : Supposant qu'on a n idServer, Je veux un résultat de ce genre :
      datetime | valeur1\(valeur1+valeur2) pour server A | valeur1\(valeur1+valeur2) pour server B | ... et ainsi de suite n fois
      Mais j'avoue que je ne sais pas si c'est faisable..
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > sriwLiw
       
      AS TU ESSAYE ???????
      C'est EXACTEMENT ce que TU DEMANDES !!!!
      0
    3. sriwLiw
       
      Oui j'ai essayé mais ce n'est pas ce que je cherche.. Peut être que je me suis mal exprimé
      Je ne vois pas pourquoi je dois sommer déjà car le résultat que je cherche est par serveur et non pas une moyenne général
      Je veux avoir avoir en sortie autant de colonne que de serveur existant ajoutant à ceci bien sur le datetime

      Merci quand même pour tes efforts !
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > sriwLiw
       

      Je veux avoir avoir en sortie autant de colonne que de serveur existant ajoutant à ceci bien sur le datetime

      Ah non.. là .. tu auras autant de LIGNES que de serveurs/datetime

      Au pire.. essayes en inversant le group by
      GROUP BY serveur,datetime
      

      ou
      GROUP BY datetime,serveur
      


      Si tu veux le résultat en Colonnes ...vu que tu ne connais pas à l'avance le nombre de serveurs... ça risque de ne pas être possible...
      0
    5. sriwLiw
       
      Oui, ce que je compte faire justement et de construire cette requête en php en ayant prélablement récupéré les serveurs existants. Dans ce cas la, j'ai essayé ainsi pour tester avec 2 serveurs mais j'y arrive vraiment pas :

      SELECT datetime, server1.valeur1/(server1.valeur1+server1.valeur2), server2.valeur1/(server2.valeur1+server2.valeur2) from ma_table, (select valeur1, valeur2 from ma_table where idServer = 'XXXXXX' GROUP BY datetime) AS server1, (select valeur1, valeur2 from ma_table where idServer = 'YYYYYY' GROUP BY datetime) AS server2;


      Quelqu'un peut il me corriger cela, ça me donne une infinité de résultats !
      0