re,
J'avais oublié de préciser que le champ AnneeMois doit être trié en
ordre croissant dans la 1ere requête (ou la 2eme) pour que la 2eme
requête affiche les données de manière cohérente.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
J'avais oublié de préciser que le champ AnneeMois doit être trié en
ordre croissant dans la 1ere requête (ou la 2eme) pour que la 2eme
requête affiche les données de manière cohérente.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
J'avais oublié de préciser que le champ AnneeMois doit être trié en
ordre croissant dans la 1ere requête (ou la 2eme) pour que la 2eme
requête affiche les données de manière cohérente.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.comBonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.
Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.com
Bonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.comBonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Bon, pas super cool la table mais enfin.
1 - Créer une requête RQ0 sur la table avec un champ calculé faisant la
concaténation des champs IMP Name , date_xx et ROF
CC: [IMP Name] & [Date_YYYY] & Format([Date_MM];"00") &
Format([Date_DD];"00") & [ROF]
et mettre le tri croissant sur ces champs là (dans cet ordre)
2 - Créer une nouvelle requête sur RQ0 avec en 1ere colonne un champ
Compteur défini comme suit:
Compteur: CpteDom("*";"RQ0";"CC<" & Car(34) & [CC] & Car(34))+1
CAR(34) = " car tes champs [IMP Name] contiennent des '
Mettre les autres champs utiles
*Transformer* cette requête en mode création de Table pour créer une
table contenant les données à traiter avec le compteur (les opérations
faisant appel à des fonctions de domaines sont pénalisantes, alors si en
plus on doit dans la meme requête faire calculer le compteur, on s'en
sort plus) Nb : la requête création de table sur le 2750 enregistrements
initiaux prend 1 minute environ. Soit RQ1 cette requête Création de
table et Test le nom de la table.
3 - Création d'une nouvelle requête RQ2 basée sur la table précédement
créée Test.
Les champs nécessaires et un champ calculé:
Moving Average: VraiFaux(Pas
EstNull(RechDom("compteur";"Test";"Compteur=" & [compteur]-3 & " and
[IMP Name]=" & Car(34) & [Imp Name] & Car(34)));MoyDom("[Total
Score]";"Test";"Compteur Between " & [Compteur]-3 & " and " & [Compteur]
& " And [IMP Name]=" & Car(34) & [IMP Name] & Car(34));0)
Tu auras alors pour les 2750 enregistrements tes Moving Average. C'est
quasi-instantané.
La base ici : http://cjoint.com/?cbpunaQTgv
PS : Je ne suis pas staticticien mais quelques remarques/questions:
La moving Average avec t=4 ne peut être égale à la moyenne sauf s'il y a
exactement 4 et seulement 4 observations.
Comment comparer une moyenne globale avec une moyenne glissante ?Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.comBonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Bon, pas super cool la table mais enfin.
1 - Créer une requête RQ0 sur la table avec un champ calculé faisant la
concaténation des champs IMP Name , date_xx et ROF
CC: [IMP Name] & [Date_YYYY] & Format([Date_MM];"00") &
Format([Date_DD];"00") & [ROF]
et mettre le tri croissant sur ces champs là (dans cet ordre)
2 - Créer une nouvelle requête sur RQ0 avec en 1ere colonne un champ
Compteur défini comme suit:
Compteur: CpteDom("*";"RQ0";"CC<" & Car(34) & [CC] & Car(34))+1
CAR(34) = " car tes champs [IMP Name] contiennent des '
Mettre les autres champs utiles
*Transformer* cette requête en mode création de Table pour créer une
table contenant les données à traiter avec le compteur (les opérations
faisant appel à des fonctions de domaines sont pénalisantes, alors si en
plus on doit dans la meme requête faire calculer le compteur, on s'en
sort plus) Nb : la requête création de table sur le 2750 enregistrements
initiaux prend 1 minute environ. Soit RQ1 cette requête Création de
table et Test le nom de la table.
3 - Création d'une nouvelle requête RQ2 basée sur la table précédement
créée Test.
Les champs nécessaires et un champ calculé:
Moving Average: VraiFaux(Pas
EstNull(RechDom("compteur";"Test";"Compteur=" & [compteur]-3 & " and
[IMP Name]=" & Car(34) & [Imp Name] & Car(34)));MoyDom("[Total
Score]";"Test";"Compteur Between " & [Compteur]-3 & " and " & [Compteur]
& " And [IMP Name]=" & Car(34) & [IMP Name] & Car(34));0)
Tu auras alors pour les 2750 enregistrements tes Moving Average. C'est
quasi-instantané.
La base ici : http://cjoint.com/?cbpunaQTgv
PS : Je ne suis pas staticticien mais quelques remarques/questions:
La moving Average avec t=4 ne peut être égale à la moyenne sauf s'il y a
exactement 4 et seulement 4 observations.
Comment comparer une moyenne globale avec une moyenne glissante ?
Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.
Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.com
Bonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Bon, pas super cool la table mais enfin.
1 - Créer une requête RQ0 sur la table avec un champ calculé faisant la
concaténation des champs IMP Name , date_xx et ROF
CC: [IMP Name] & [Date_YYYY] & Format([Date_MM];"00") &
Format([Date_DD];"00") & [ROF]
et mettre le tri croissant sur ces champs là (dans cet ordre)
2 - Créer une nouvelle requête sur RQ0 avec en 1ere colonne un champ
Compteur défini comme suit:
Compteur: CpteDom("*";"RQ0";"CC<" & Car(34) & [CC] & Car(34))+1
CAR(34) = " car tes champs [IMP Name] contiennent des '
Mettre les autres champs utiles
*Transformer* cette requête en mode création de Table pour créer une
table contenant les données à traiter avec le compteur (les opérations
faisant appel à des fonctions de domaines sont pénalisantes, alors si en
plus on doit dans la meme requête faire calculer le compteur, on s'en
sort plus) Nb : la requête création de table sur le 2750 enregistrements
initiaux prend 1 minute environ. Soit RQ1 cette requête Création de
table et Test le nom de la table.
3 - Création d'une nouvelle requête RQ2 basée sur la table précédement
créée Test.
Les champs nécessaires et un champ calculé:
Moving Average: VraiFaux(Pas
EstNull(RechDom("compteur";"Test";"Compteur=" & [compteur]-3 & " and
[IMP Name]=" & Car(34) & [Imp Name] & Car(34)));MoyDom("[Total
Score]";"Test";"Compteur Between " & [Compteur]-3 & " and " & [Compteur]
& " And [IMP Name]=" & Car(34) & [IMP Name] & Car(34));0)
Tu auras alors pour les 2750 enregistrements tes Moving Average. C'est
quasi-instantané.
La base ici : http://cjoint.com/?cbpunaQTgv
PS : Je ne suis pas staticticien mais quelques remarques/questions:
La moving Average avec t=4 ne peut être égale à la moyenne sauf s'il y a
exactement 4 et seulement 4 observations.
Comment comparer une moyenne globale avec une moyenne glissante ?Hello Eric,
Tout d'abord un grand merci pour ton aide. J'ai pensé que le plus simple
serait de t'envoyer ma base de donnée que j'ai limité en taille bien sûr, ce
n'est qu'un exemple mais qui reprend bien mes besoins. Tu trouveras le
fichier zippé à cette adresse : http://cjoint.com/?cbj5ppRPKr
Je t'ai mis la base de données Access, ds la requête :Requête1 conversion du
mois en string, j'ai transformé le moi du numérique en string. Dans la
requête :Requête2 Moyenne arith de total score par Imp Name, je te présente
mon calcul de moyenne arithmétique pour le champ Total score et ceci avec un
group by sur l'IMP_Name.
C'est ce calcul que je voudrais reproduire mais en utilisant cette fois la
moyenne mobile ou glissante sur par exemple les 4 derniers enregistrements
(donc avec un intervalle ou décalage de 4). Le but de la manoeuvre ici c'est
que j'accorde plus de poids ou d'importance ou records les plus récents. Je
t'ai mis dans le fichier excel ce que je souhaiterais avoir comme résultat
(en l'automatisant sous Access car j'ai un nb de records dans ma base très
important). Par contre pour ton info, je n'ai jamais programmé sous Access,
je manipule que les tables et requêtes en faisant des liens entre elles, je
sais modifier le code SQL dans les requêtes, bref je maîtrise assez bien
l'outil ; j'ai fait de l'Sql sous Oracle et sous SQL+ mais c'est tout. Je
suis statisticienne, mais pas informaticienne ... J'ai appris tout sur le
tas.
Dans le fichier Excel, tu trouveras qqs résultats :
A & W MADAGASCAR S.A.R.L. / avg = 3,046042715 et Moy mobile (t=4) =
3,046042715. Ici on a le même résultat car le nb de records est <=4 donc
moyenne mobile=moyenne arithmétique.
A chaque fois que le nb de records pour un Imp_name i donné : IMP_i est <=4
alors avg de Total score pour IMP_i = moyenne mobile de Total score pour IMP_i
AD COMPANY / avg=1,616586273 et Moy mobile (t=4) =0,051464125
AIR MADAGASCAR / avg,31536414 et Moy mobile (t=4)=3,867241505
AQUACULTURE DE LA MAHAJAMBA / avg et Moy mobile (t=4)=7,033275216
A partir de ces exemples, on voit que si on prend les 4 dernières moyennes
lissées, on a une moyenne pour le champ Total score bien inférieure à ce
quelle serait si on prenait la totalité de la période. Sur une période
récente la moyenne de Total score
est plus faible.
Voilà exposé mon problème, je suis à ton écoute si tu as une idée pour
maiguiller ou me dire comment faire. A très bientôt et merci encore pour ton
aide.Bonjour,
Il n'est pas necesaire que (Annee-Mois) constitue la clé primaire. Pour
la suite, je remplacerai Annee par An et Mois par LeMois car annee et
mois sont des mots réservés.
Dans une fonction de Domaine ( MoyDom, RechDom, MaxDom, SomDom ...) le
3eme argument appelé critère est une clause SQL Where sans le mot Where.
Le SQL s'écrit en US. C'est pourquoi j'ai mis
MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" où CStr est le mot US
pour correspondant à CChaîne ( ah le french avec ses accents ^ !
Par contre, je concatène ensuite un champ de la requête, après le &
et là, étant sorti de la chaîne SQL, je dois revenir au French, même si
je le fais pas Access s'en chargera.
Oui CChaîne est une fonction qui convertit en Chaine de caractères la
variable passée. On est obligé de passer par là pour concaténer l'année
et le mois pour les calculs.
Pour répondre à ton besoin, la démarche est la suivante:
A - Création d'une requête avec les champs voulus et ajout d'un champ
concaténant l'année et le mois, et d'un champ calculé qui sert de
compteur. Soit RQALEXIA1 cette requête.
1er champ - Compteur:Compteur: CpteDom("*";"alexia";"Cstr(An) &
format(lemois,'00')<'" & [AnneeMois] & "'")+1
2eme champ - AnneeMois: CChaîne([An]) & Format([LeMois];"00")
3e champ - An
4e champ - LeMois
5e champ - Effectif
B - Création d'une requête calculant la moyenne glissante basée sur la
requête précédente:
1er champ - An
2e champ - LeMois
3e champ - Effectif
4e champ - Moving Average:
VraiFaux([Compteur]>4;MoyDom("Effectif";"RQAlexia1";"Compteur Between "
& [Compteur]-4 & " and " & [Compteur]);Null)
Remarque : Faut-il arrondir les valeurs de Moving Average ?
Et voila.
(PS: Les formules des champs calculés tiennent sur une ligne)
PS2: Si problème, je peux te mettre une BD avec ton exemple et les 2
requêtes sur cjoint.comBonsoir Eric,
J'ai regardé la requête et j'avoue avoir qqs questions. Déjà, est-on obligé
de mettre mois et année en clés primaires ? Ensuite en décomposant la formule
:
Avec Round: Round(MoyDom("Effectif";"JG";"cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'");0)
je remarque que si j'écris : Expr2: "cstr([annee]) & [Mois]<='" &
CChaîne([annee]) & [Mois] & "'"
cela me donne comme résultat dans le champs: Expr2 :
cstr([annee]) & [Mois]<='200501', je ne comprends pas trop à quoi sert cette
partie mais je devine le but de la manip. Par contre, dès que je réduis
l'expression à : Expr1: cstr([annee]) & [Mois], ce que j'ai tapé se
transforme en Expr1: CChaîne([annee]) & [Mois] avec en résultat : 200501 (A
quoi correspond cette fonction CChaîne, visiblement à passer du format nombre
en texte ? )
Sinon, ma question est la suivante, si je veux effectuer cette moyenne
glissante en introduisant un pas de 5 (t+5) par exemple, cad que je veux
calculer la moyenne glissante avec un décalage toujours de de 1 mais avec
une moyenne calculée à chaque fois sur les 5 derniers records et ceci en
glissant de mois en mois, comment puis-je faire ?
Annee Mois Effectif Moyenne glissante pas de 5
2005 01 100
2005 02 110
2005 03 120
2005 04 110
2006 01 300 148
2006 02 303 188,6
2006 03 200 206,6
2006 04 400 262,6
2006 05 150 270,6
2006 06 350 280,6
2006 07 270 274
Merci encore pour votre aide.
Alexia
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Si tu ne veut pas afficher 0 pour les Moving Average qui ne peuvent être
calculées (car pas asez de données), remplaces le dernier argument dans
le VraiFaux ( soit 0) par Null dans RQ2.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr