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 :

Calcul moyenne sur plusieurs dates


Sujet :

Requêtes et SQL.

  1. #1
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Calcul moyenne sur plusieurs dates
    Bonjour tout le monde,

    J'ai besoin d'aide sur un sujet assez important que je n'ai pas réussi à mettre en place,
    Je consulte la base de données du boulot pour avoir les détails d'historique sur les références et surtout les dates de mouvements liées à ces références.
    J'ai crée une jointure entre les champs souhaités et tout fonctionne normalement..

    Maintenant je souhaite faire des calculs pour avoir une estimation de la fréquence de sortie d'une référence,
    Sauf que évidement j'ai plein de mouvements informatiques sur les références sélectionnées.

    Je ne vais pas vous baratiner plus longtemps je vais allez droit au but !

    J'ai dans mon résultat par exemple :

    Refart DateMouvt
    050C1000CSE 20/09/2016 11:31
    050C1000CSE 03/09/2016 11:31
    050C1000CSE 15/08/2016 11:31
    050C1000CSE 03/08/2016 11:31
    050C1000CSE 10/10/2016 11:27
    050C1000CSE 04/10/2016 11:27
    8NAPQ0657A 21/09/2016 13:52
    8NAPQ0657A 12/07/2016 14:35
    8NAPQ0657A 04/08/2016 15:45
    8NAPQ0657A 11/08/2016 11:49
    8NAPQ0657A 25/08/2016 16:49
    8NAPQ0657A 25/08/2016 17:34

    On constate bien que plusieurs mouvements sont indiqués à une même référence, normal vu qu'elle a été sortie du stock plusieurs fois.
    Maintenant comment faire pour regrouper chaque référence sur 1 ligne et a coté avoir la moyenne de fréquence de sortie, l'intervalle d'utilisation entre les dates données.

    De préférence en jours, si possible

    Autre cas possible à défaut d'avoir la fréquence : (Priorité au calcul de la fréquence de sortie)

    Imaginons que je n'ai qu'un seul mouvement sur une référence XXXX à la date XXXX

    Qu'elle serait sa fréquence ? Pas fiable dans ce cas non ? le nombre de sortie serait plus judicieux dans ce cas précis.

    J'ai réussi à obtenir des résultats de mon coté mais je ne les trouve pas cohérent au niveau du calcul.

    J’attends impatiemment vos retours sur ce sujet auquel j'accorde une grande importance.
    Moi je vais allez pioncer ayant bossé de nuit je suis H.S

    Cordialement,,

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 429
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Bonsoir,

    Essayer une requête regroupement sur le champ RefArt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_Mouvement.RefArt, (Max([DateMouvt])-Min([DateMouvt]))/(Count([RefArt])-1) AS frequence
    FROM T_Mouvement
    GROUP BY T_Mouvement.RefArt;
    Et le champ calculé pour la fréquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frequence : (Max([DateMouvt])-Min([DateMouvt]))/(Count([RefArt])-1)
    Pour le cas ou il y a une seul référence, peut-être essayer avec la fonction vraifaux de renvoyer Null dans ce cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frequence: VraiFaux(Compte([RefArt])>1;(Max([DateMouvt])-Min([DateMouvt]))/(Compte([RefArt])-1);Null)
    Cdlt,

  3. #3
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Bonsoir,

    Ça fonctionne bien, par contre l'argument pris en compte et le mouvement le plus ancien et le plus récent, puis la moyenne des deux c'est bien ça ?

    Si c'est bien le cas, il ne serait pas possible de plutôt calculer la moyenne sur de multiple date ?

    Exemple :

    10/10/19
    12/10/19
    14/12/19

    Moyenne : tous les deux jours.



    Cordialement,

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 429
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Cela calcule l'intervalle moyen entre 2 mouvements d'une même référence :

    (DateMaxi - DateMini)/ (Nbre_Mouvts_Ref-1)

    Cdlt,

  5. #5
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par User Voir le message
    Cela calcule l'intervalle moyen entre 2 mouvements d'une même référence :

    (DateMaxi - DateMini)/ (Nbre_Mouvts_Ref-1)

    Cdlt,
    Re,


    Donc seul le mouvement le plus ancien et le plus récent es pris en compte ?

    Si par exemple j'ai un mouvement du type suivant :

    10/12/2000 'mouvement très ancien) puis aucun mouvement...

    Puis :

    23/12/2019
    24/12/2019

    Il me fait la moyenne entre le 10/12/2000 & le 24/12/2019

    Ce qui es différent d'une autre référence qui pourrait par exemple avoir :

    23/12/2019
    24/12/2019

    Moyenne de 1 jour.

    Pour finir tu peux m'expliquer rapidos que veut dire le (Count([RefArt])-1)

    Pourquoi -1 ?

    Cordialement,

  6. #6
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Au fait c'est bien en jours la fréquence ?

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 429
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Pourquoi moins 1 :

    suppose que tu as :

    20/12/2019
    23/12/2019
    24/12/2019

    Combien d'intervalles dans cette suite ?

    Autant que de dates moins une :

    3-1 = 2 intervalles

    20/12/2019---23/12/2019---24/12/2019

    (24/12/2019-20/12/2019) / 2

    4/2 = 2 jours

    Je vois pas trop ce que tu cherches à faire avec ta moyenne des dates ?

    Il faut raisonner en termes d'intervalles il me semble, non ?

    Cdlt,

  8. #8
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Par contre j'ai un souci lorsque je veut ajouter plus de critère, Je souhaite crée une jointure avec une table qui comporte e stock actuel.

    Quel modification dois-je effectuer pour qu'il n'y es pas d’ambiguïté avec la solution que tu ma donné ?
    Apparemment comme mon autre table comporte aussi un champ nommé "Refart" sa cause un problème.

    Cdt

    Nom : 2019-12-23_22h33_19.png
Affichages : 743
Taille : 39,7 Ko

  9. #9
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par User Voir le message
    Pourquoi moins 1 :

    suppose que tu as :

    20/12/2019
    23/12/2019
    24/12/2019

    Combien d'intervalles dans cette suite ?

    Autant que de dates moins une :

    3-1 = 2 intervalles

    20/12/2019---23/12/2019---24/12/2019

    (24/12/2019-20/12/2019) / 2

    4/2 = 2 jours

    Je vois pas trop ce que tu cherches à faire avec ta moyenne des dates ?

    Il faut raisonner en termes d'intervalles il me semble, non ?

    Cdlt,
    Ho sympa j'ai bien compris, le plus triste c'est que tu ai mieux compris que moi ce que je voulait en faire hahaha

    Tu peux juste voir pour mon dernier message et l'erreur rencontré stp, je voudrais pas me retrouver comme un C*** demain au boulot si on me demande d'ajouter d'autre critere ou de faire des jointure.

    Je te remercie sincèrement en tout cas

    Cdt.

  10. #10
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Supposons également que je souhaite faire la même chose mais sur les 6 derniers mois ?
    Je fait d'abord une requête sur les 6 derniers mois, et ensuit une autre requête avec le code que tu ma donné ?
    Car si je rajoute d'autre champs ça me crée des erreurs, 'dépassement de capacité" etc..

    Mais je pourrais toujours faire la manip en deux étapes je pense.

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 429
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Il faut préfixer le champ RefArt avec le nom de la table [Dbo_histomvt].

    VraiFaux(Compte([Dbo_histomvt].[RefArt])>1;(Max([DateMouvt])-Min([DateMouvt]))/(Compte([Dbo_histomvt].[RefArt])-1);Null)

    Cdlt,

  12. #12
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par User Voir le message
    Il faut préfixer le champ RefArt avec le nom de la table [Dbo_histomvt].

    VraiFaux(Compte([Dbo_histomvt].[RefArt])>1;(Max([DateMouvt])-Min([DateMouvt]))/(Compte([Dbo_histomvt].[RefArt])-1);Null)

    Cdlt,
    Vraiment désolé je suis un manche

    Je n'ai pas utiliser cette formule pour ma requête mais j'ai utilisé celle que tu m'avais donné avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frequence: (Max([DateMouvt])-Min([DateMouvt]))/(Compte([RefArt])-1)
    J'ai essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frequence: (Max([Dbo_histomvt].[DateMouvt])-Min([Dbo_histomvt].[DateMouvt]))/(Compte([Dbo_histomvt].[RefArt])-1)
    Mais j'ai toujours le meme message.

    Cdt

  13. #13
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Re
    J'ai réussi finalement,

    Mais la j'ai un autre souci, il m'es impossible d'ajouter un critère sur le champ "typemvt"

    Je souhaite filtrer en ajoutant un critère en fonction du type de mouvement, sortie de stock, entré, inventaire ect

    J'ai ajouter le champ "type mvt" de la table [Dbo_histomvt] avec comme critère "S" comme sortie mais un message d'erreur apparait disant "dépassement de capacité"

    Sais-tu ce que cela veut dire ?

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 429
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Je ne sais pas trop.
    Sinon, pourquoi as-tu mis un critére sous le champs frequence ?
    Ça ne me semble pas indispensable.
    Cdlt,

  15. #15
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Salut,

    Le critère était sous "typemvt"

    J'ai réussi à faire ce que je voulais je te remercie.

    Sa donne chaud au crâne access 🤨

Discussions similaires

  1. calcul de moyenne sur plusieurs plages dans une colonne
    Par Jean-luc79 dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2014, 12h20
  2. Calculer une moyenne sur plusieurs colonnes
    Par stöckli dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/10/2011, 15h44
  3. Calcul basé sur plusieurs enregistrements
    Par Zinemon dans le forum IHM
    Réponses: 3
    Dernier message: 02/10/2007, 14h41
  4. Réponses: 5
    Dernier message: 06/07/2007, 19h59
  5. MàJ Formulaire sur plusieurs dates
    Par Sami Xite dans le forum IHM
    Réponses: 2
    Dernier message: 19/02/2007, 17h09

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