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

Requêtes MySQL Discussion :

MAX d'une somme de valeurs sur une période de temps donnée


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut MAX d'une somme de valeurs sur une période de temps donnée
    Bonjour,

    Je vais essayer d'expliquer clairement mon problème. J'ai 5 équipements ( = 5 tables). Dans ces tables, les valeurs des indicateurs sont calculées toutes les 5mn. Admettons que l'on veuille le MAX d'un indicateur avec comme ID_indicateur pour l'équipement 1 = $a, le 2 = $b, le 3 $c, le 4 $d et le 5 $e.

    Ce que je dois faire c'est pour une date donnée (on va prendre 26-02-2012 0:00:00 jusqu'à 26-02-2012 23:55:00), additionner $a, $b, $c, $d, $e et prendre le garder le MAX pour chaque itération de temps.

    En gros sommairement, toutes les 5mn a + b + c + d + e = X. Si (X < (a+b+c+d+e) (5mn plus tard)) alors MAX = a+b+c+d+e;

    Je ne sais pas si ça peut se faire en SQL, c'est pour ça que je me tourne vers vous.

    L'idée serait de faire quelque chose dans le genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Jour,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') as maxpdp  FROM APNDEDIE_ERICSSON where Jour between "'.$datedeb.'" and "'.$datefin.'" GROUP BY Jour';

    Mais ce code ne marche qu'avec une seule table et tous les indicateurs à l'intérieur or ce n'est pas mon cas.

    Merci d'avance pour toute l'aide que vous allez apporter.

    PS : Il se peut que la base soit mal construite etc, cependant je dois faire avec.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    En effet, votre base est mal modélisée, du coup votre requête est plus compliquée.

    Vous avez deux solutions :
    1/
    Faites des jointures externes (ou internes, si tous les indicateurs ont toujours des données aux mêmes dates dans toutes les tables) entre toutes vos tables avec une condition de jointure sur l'id_indicateur et la date, pour calculer la somme par date et par indicateur.
    Il est ensuite facile de trouver le max.

    Vous pouvez utiliser la fonction COALESCE pour gérer les éventuels NULL dûs aux absences de données.

    2/ Faites des union all entre toutes vos tables pour faire les totaux par indicateur et par date

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Points : 156
    Points
    156
    Par défaut
    Pour cette réponse !

    Je pense partir pour l'option de l'union.

    Voici mon union mais j'ai l'impression que ce n'est pas correct car je ne peux pas l'exploiter avec mysql_query...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT date_heure,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') AS maxPdp FROM GG1BAGN_GGSN_'.$semaine.'_'.$annee.' WHERE date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\' GROUP BY date_heure
    UNION
    SELECT date_heure,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') AS maxPdp FROM GG1LACA_GGSN_'.$semaine.'_'.$annee.' WHERE date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\' GROUP BY date_heure
    UNION
    SELECT date_heure,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') AS maxPdp FROM GG2MASS_GGSN_'.$semaine.'_'.$annee.' WHERE date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\' GROUP BY date_heure
    UNION
    SELECT date_heure,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') AS maxPdp FROM GG3BEAU_GGSN_'.$semaine.'_'.$annee.' WHERE date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\' GROUP BY date_heure
    UNION
    SELECT date_heure,SUM(ggsnApnActivePdpContextCount'.$nomAPN[$i].') AS maxPdp FROM GG4BLAN_GGSN_'.$semaine.'_'.$annee.' WHERE date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\' GROUP BY date_heure;

    EDIT :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT date_heure,SUM(maxPdp) FROM (
    	SELECT date_heure,MAX(valeur) AS maxPdp FROM GG1LACA_GGSN_'.$semaine.'_'.$annee.' WHERE ID_indicateur = '.$indicateursPdp[$a].' AND date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\'
    	UNION ALL
    	SELECT date_heure,MAX(valeur) AS maxPdp FROM GG2MASS_GGSN_'.$semaine.'_'.$annee.' WHERE ID_indicateur = '.$indicateursPdp[$a+1].' AND date_heure BETWEEN \''.$dateDeb.'\' AND \''.$dateFin.'\'
    	) AS tmp GROUP BY date_heure;

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

Discussions similaires

  1. [XL-2010] Afficher les valeurs d'une colonne non répetées sur une deuxième
    Par zombiestomp dans le forum Excel
    Réponses: 3
    Dernier message: 26/02/2014, 12h05
  2. Récupérer la valeur d'une cellule avec fonction sur une autre feuille
    Par rogerlette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2010, 12h38
  3. Réponses: 2
    Dernier message: 28/08/2008, 08h52
  4. Réponses: 9
    Dernier message: 18/02/2008, 11h25
  5. [Access] Requête sur une table et tri sur une autre
    Par VooDooS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 15h07

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