Selectionner des moyennes par serveurs dont le nombre peu varier

Fermé
sriwLiw - 24 juin 2015 à 21:06
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 - 25 juin 2015 à 14:21
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

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
25 juin 2015 à 08:39
Bonjour
as tu regardé du côté de GROUP BY ?

0
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
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
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
25 juin 2015 à 10:16

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
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
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > sriwLiw
25 juin 2015 à 10:38
AS TU ESSAYE ???????
C'est EXACTEMENT ce que TU DEMANDES !!!!
0
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
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > sriwLiw
25 juin 2015 à 11:23

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
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