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 :

Calcul de la durée moyenne de traitement


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut Calcul de la durée moyenne de traitement
    Bonjour j'ai une requête comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(SERVICE) FROM `depots` WHERE SERVICE IN ('PTV', 'DIT') AND `OPERATEUR` IN ('WAVE') AND `DATE RETOUR` > '0000-00-00'
    J'aimerais à partir de ce résultat faire une moyenne de durée de traitement en jour en fonction du nombre de dossier que cette requête donne. et cela sur 320 jours ou une durée de janvier au 15 novembre

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Bonsoir

    Pourquoi utiliser l'opérateur IN pour une seule valeur AND `OPERATEUR` IN ('WAVE').
    Pourquoi paramétrer MySQL pour accepter des dates invalides AND DATE RETOUR` > '0000-00-00' ou pire, stocker une date dans une colonne de type non DATE ?
    Enfin, quelle est la règle de gestion pour calculer la durée alors que la table concernée ne possède qu'une seule colonne date ?

    Si par exemple, la durée s'applique en calculant la différence entre la date du jour et la date_retour alors on peut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select count(*)
         , avg(datediff(now(), date_retour))
    from depot
    where operateur    = 'WAVE'
      and date_retour > '0000-00-00'

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    1.Merci mais c'était pour illustrer ma requête sinon y'en a plusieurs raison pour laquelle j'utilise IN.
    2.ce n'est pas moi qui est conçu la base
    3.je ne comprends pas sinon il y'a une date d'arrivée et une date de retour
    4. je cherche aussi la formule pour la durée moyenne de traitement

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    S'il y a d'autres colonnes que celles que vous avez communiquées dans votre question, il faut communiquer la description complète de la table, il est impossible de deviner la structure de vos tables.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    1 NUMERO varchar(25) utf8_general_ci Oui NULL Affiche les valeurs distinctes Affiche les valeurs distinctes
    2 OPERATEUR varchar(50) utf8mb4_general_ci Non Aucune Affiche les valeurs distinctes Affiche les valeurs distinctes
    3 SERV varchar(50) utf8mb4_general_ci Non Aucune Affiche les valeurs distinctes Affiche les valeurs distinctes
    4 REQ varchar(42) utf8_general_ci Oui NULL Affiche les valeurs distinctes Affiche les valeurs distinctes
    5 INFOS F varchar(255) utf8_general_ci Oui NULL Affiche les valeurs distinctes Affiche les valeurs distinctes
    6 INFOS D varchar(255) utf8_general_ci Oui NULL Affiche les valeurs distinctes Affiche les valeurs distinctes
    7 DATE ARRIVEE date Oui NULL Affiche les valeurs distinctes Affiche les valeurs distinctes
    8 DATE RETOUR date Oui NULL

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    OK, maintenant qu'on a la liste des colonnes de la table (qui semble n'avoir pas de PK ou une PK varchar ), il faut préciser

    Citation Envoyé par Dosco10 Voir le message
    Bonjour j'ai une requête comme ceci "SELECT COUNT(SERVICE) FROM `depots` WHERE SERVICE IN ('PTV', 'DIT') AND `OPERATEUR` IN ('WAVE') AND `DATE RETOUR` > '0000-00-00' " J'aimerais à partir de ce resultat faire une moyenne de durée de traitement en jour en fonction du nombre de dossier que cette requête donne. et celà sur 320 jours ou une duree de janvier au 15 novembre
    Est-ce la date de retour ou la date d'arrivée qui doit être comprise dans l'intervalle du 1er janvier au 15 novembre ?

    Exemple basé sur la date retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select count(*)
         , avg(datediff(date_arrivee, date_retour))
    from depot
    where operateur    = 'WAVE'
      and date_retour between '2020-01-01' and '2020-11-15'

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    oui elle doit être comprise pour déterminer la durée et voila ce que votre requête donne cette erreur " Incorrect parameters in the call to native function 'datediff' "je crois que ca ne s'utilise pas comme ca

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Dans ma requête, j'ai utilisé des underscore dans les noms des colonnes date, je vois que vos colonnes comportent des blancs dans les noms ...
    Créer des noms d'objets avec des caractères réservés tels que les espaces est une galère pour les requêtes.
    Celui qui a créé cette base de données est décidément un shadock : pourquoi faire simple quand on peut faire compliqué.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    EN REALITE C'EST UNE VUE LA TABLE SUR LAQUELLE JE TRAVAILLE

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Peu importe : remplacez les underscore par des espaces et encadrez les noms des colonnes avec des délimiteurs puisque ces noms comportent des caractères spéciaux

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Dans ma requête, j'ai utilisé des underscore dans les noms des colonnes date, je vois que vos colonnes comportent des blancs dans les noms ...
    Créer des noms d'objets avec des caractères réservés tels que les espaces est une galère pour les requêtes.
    Celui qui a créé cette base de données est décidément un shadock : pourquoi faire simple quand on peut faire compliqué.
    OUI je le sait tellement que j'ai fini par nommer tout mes fichiers sans espace peu importe l'outil meme en bureautique mais ce n'est pas moi qui est fait la base mais j'ai fini par modifier.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    sinon voila en piece jointe un extrait de ma vue que j'ai exporté en .xls ca pourais aider. il yy'a les dates sur lesquelles calculer la moyenne en fonction des numero de dossier choisi j'espere etre assez claire
    Fichiers attachés Fichiers attachés

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    OK, maintenant qu'on a la liste des colonnes de la table (qui semble n'avoir pas de PK ou une PK varchar ), il faut préciser


    Est-ce la date de retour ou la date d'arrivée qui doit être comprise dans l'intervalle du 1er janvier au 15 novembre ?

    Exemple basé sur la date retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select count(*)
         , avg(datediff(date_arrivee, date_retour))
    from depot
    where operateur    = 'WAVE'
      and date_retour between '2020-01-01' and '2020-11-15'
    1.ce n'est pas moi qui est conçu la base mais il y'a une clé primaire sur la table originale mais cette table sur laquelle nous travaillons est une vue et j'utilise ici la colonne numero comme id de dossier meme si elle n'est pas cle primaire

    2.ne considere plus les date cétait juste pour illustrer que j'avais choisi des dates sinon c'est la difference entre la date d'arrive et celle du retour.

    3.m'nspirant de ta requête voilà le code que j'ai utilise finalement et qui marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(DATEDIFF( date_arrivee, date_retour )) FROM `depot` WHERE SERVICE IN ('pef') and `OPERATEUR` = ('wave') AND `date_retour` > '0000-00-00' AND `date_retour` BETWEEN '2019-01-01' and '2019-11-15'
    mais quand je veux calculer la moyenne en faisant AVG comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(SUM(DATEDIFF( date_arrivee, date_retour ))) FROM `depot` WHERE SERVICE IN ('pef') and `OPERATEUR` = ('wave') AND `date_retour` > '0000-00-00' AND `date_retour` BETWEEN '2019-01-01' and '2019-11-15'
    j'ai cette erreur : #1111 - Invalid use of group function

  14. #14
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 929
    Points
    929
    Par défaut
    Bonsoir Dosco10,

    SUM et AVG sont des opérations qui portent sur des ensembles.
    datediff est une fonction qui s'applique sur chaque enregistrement qui vérifie tes conditions.

    Autant tu peux faire SUM ( datediff(colonne1, colonne2)) - c'est le cumul des délais - OU AVG( datediff(colonne1, colonne2)) - calcul d'un délai moyen -,
    autant ça n'a pas de sens de faire AVG(SUM(datediff(colonne1, colonne2)))
    => c'est pour cela que MySQL te signale une utilisation illégitime d'un mécanisme ensembliste.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    merci paraffine cà marche !

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

Discussions similaires

  1. [Toutes versions] Calcul durée / Moyenne
    Par Chris75019 dans le forum Excel
    Réponses: 1
    Dernier message: 22/11/2020, 23h25
  2. Réponses: 8
    Dernier message: 26/08/2013, 19h36
  3. Calculer la durée moyenne
    Par aelarbaoui dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2009, 12h26
  4. Réponses: 8
    Dernier message: 22/05/2008, 17h05
  5. Calcul d'une durée moyenne
    Par Aurazed dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2007, 09h40

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