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 et SQL. Discussion :

créer une moyenne glissante [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 291
    Points
    291
    Billets dans le blog
    1
    Par défaut créer une moyenne glissante
    bonjour,

    après avoir cherché je n'ai pas vraiment trouvé de solution qui fonctionne à mon problème:
    je veux calculer une moyenne glissante sur une série
    NUMORD MG MOYGLI
    1 35 35
    2 40 37.5
    3 36 37
    4 50 40.25

    en fait pour le niveau n c'est la somme des n divisé par n
    j'ai bien tenté un Moydom(MG;matable;NUMORD=NUMORD) mais ça me renvoie pour tous les numord la moyenne du dernier niveau (40.25)

    merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    à bien regarder la moyenne glissante que tu cherches est la moyenne des MG
    pour lesquels le numord est plus petit ou égal au NumOrd lu.
    essaie ceci : Pour l'exemple j'appelle ta table TaTable
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT A.NumOrd, A.MG, (SELECT Avg(MG) FROM TaTable WHERE NumOrd<=A.NumOrd) As [Moyenne glissante]
    FROM TaTable As A;

  3. #3
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 291
    Points
    291
    Billets dans le blog
    1
    Par défaut
    Je viens d'essayer et toujours pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_TRAV.NUMORD, T_TRAV.MG, (SELECT Avg(MG) FROM T_TRAV  WHERE NUMORD<=T_TRAV.NUMORD) AS [Moyenne glissante]
    FROM T_TRAV;

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    L'instruction As A n'est pas de la cosmétique ça permet de différencier les enregistrements sur laquelle la moyenne est calculée et les enregistrements de sélection.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT A.NUMORD, A.MG, (SELECT Avg(MG) FROM T_TRAV WHERE NUMORD<=A.NUMORD) As [Moyenne glissante]
    FROM T_TRAV As A;

  5. #5
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 291
    Points
    291
    Billets dans le blog
    1
    Par défaut
    Je ne comprends pas la syntaxe mais ça marche nickel
    merci
    je veux bien des explications si c'est possible sur l'utilisation de ce A!

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Ok, le As (pour Alias) permet en fait à SQL d'identifier la table ou le champ sur lequel il est appliqué par un autre nom. Donc, ici T_TRAV et A pour SQL sont deux tables différentes. Tu peux écrire n'importe quoi après le As sans oublier les crochets si il y a des espaces dans le nom comme :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    As [Moyenne glissante]
    par défaut Access nomme les colonnes des champs calculés par "Expr" + un numéro d'indice.

    La requête peut également s'écrire :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Valeurs.NUMORD, Valeurs.MG, Avg(Moyennes.MG) As [Moyenne glissante]
     FROM T_TRAV As Valeurs LEFT JOIN T_TRAV As Moyennes
     ON Moyennes.NUMORD<=Valeurs.NUMORD
     GROUP BY Valeurs.NUMORD, Valeurs.MG;
    où Valeurs et Moyennes sont vues comme des copies de la table T_TRAV.

  7. #7
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 291
    Points
    291
    Billets dans le blog
    1
    Par défaut
    merci bien pour ces explications

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

Discussions similaires

  1. [XL-2003] Calculer le maxi d'une moyenne glissante
    Par anto520 dans le forum Excel
    Réponses: 3
    Dernier message: 06/09/2013, 11h37
  2. Réponses: 6
    Dernier message: 25/10/2011, 09h19
  3. Créer une moyenne selon telle variable
    Par ratm13 dans le forum SAS Base
    Réponses: 3
    Dernier message: 12/03/2011, 14h37
  4. Créer une moyenne sous condition
    Par david1409 dans le forum Excel
    Réponses: 8
    Dernier message: 28/07/2009, 07h56
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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