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 :

Requete Mysql calculer pourcentage par groupe [MariaDB]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2021
    Messages : 13
    Par défaut Requete Mysql calculer pourcentage par groupe
    Bonjour à tous,

    Avant tout, je ne suis pas développeur ! et je dois pour mon activité pro (maintenance industrielle) faire des bilans dans des tables mysql dans Dolibarr. J'utilise Reportico pour interroger la base

    je souhaite calculer le nombre d'heures et le pourcentage des ces heures par catégorie d'intervention. j'ai joint les tables, calculé le total des heures par catégories (merci à vos tutos, forums ...)
    Maintenant je n'obtiens pas le bon résultat de % par catégorie. je vous remercie d'avance pour vos conseils et aides

    la requête est écrite comme ceci (soyez indulgent !) en espérant avoir été clair dans mon descriptif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT
    llx_product.label as categorie, 
    SUM(ROUND((llx_fichinterdet.duree/3600),2)) as tps_categorie, 
    llx_commandedet.product_type as llx_commandedet_product_type, 
    (ROUND((llx_fichinterdet.duree/3600),2) / (SELECT SUM(ROUND((llx_fichinterdet.duree/3600),2)) FROM llx_fichinterdet)) * 100 PctCat
     
    FROM llx_fichinter LEFT JOIN llx_fichinterdet ON llx_fichinterdet.fk_fichinter=llx_fichinter.rowid LEFT JOIN llx_element_element ON llx_element_element.fk_target=llx_fichinter.rowid LEFT JOIN llx_commande ON llx_commande.rowid=llx_element_element.fk_source LEFT JOIN llx_commandedet ON llx_commandedet.fk_commande=llx_commande.rowid LEFT JOIN llx_product ON llx_product.rowid=llx_commandedet.fk_product
     
    WHERE llx_product.fk_product_type=1
     
    GROUP BY llx_product.label
     
    ORDER BY tps_categorie DESC
    Le résultat :

    Categories Tps Categorie Pctcat
    Travaux Programmés 118.00 0.002600
    Ronde, Suivi et 5S 43.00 0.007800
    Curratif 12.50 0.005200
    Préventif - Prédictif 11.50 0.002600
    Gestion Pieces Détachées 8.50 0.005200
    Appel Astreinte 2.00 0.010400
    Graissage et Lubrification 2.00 0.005200
    Total Tps (h) 197,5

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 455
    Par défaut
    Bonjour,
    Tu fais une jointure externe entre les tables llx_fichinter et llx_product, mais tu poses une restriction sur la deuxième table dans la clause WHERE.
    De fait tu transformes la jointure externe en jointure interne.
    Il faut déplacer la condition sur llx_product dans la jointure.

    Je ne sais pas si le problème vient de là, mais ça va certainement jouer sur le résultat.

    Pour avoir une réponse plus précise il faudrait nous fournir un jeu de test et les résultats attendus/obtenus.

    Tatayo.

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2021
    Messages : 13
    Par défaut
    Bonjour,

    Merci pour ton aide. le résultat a obtenir est le % par catégorie et celui que j'obtiens est dans le 1er message (les % ne sont pas correctement calculés)

    Pour la jointure je ne sais pas trop mais je dois filtrer un champ de la table llx_product qui doit être = 1
    Pour test j'ai retiré le filtre en mettant WHERE 1=1 mais le calcul du % est toujours erroné

    le tableau de sortie souhaité

    Categories Tps Categorie (h) Pctcat (%)
    Travaux Programmés 118.00 59.75
    Ronde, Suivi et 5S 43.00 21.77
    Curratif 12.50 6.33
    Préventif - Prédictif 11.50 5.82
    Gestion Pieces Détachées 8.50 4.30
    Appel Astreinte 2.00 1.01
    Graissage et Lubrification 2.00 1.01
    Total Tps (h) 197,5


    Merci encore

    une autre piste ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 455
    Par défaut
    Sans voir la deuxième requête, il sera difficile de dire ce qui ne va pas...

    Tatayo.

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2021
    Messages : 13
    Par défaut
    Bonjour,

    je vais exposer mon problème autrement, pouvez vous m'aider à écrire correctement la requête pour sortir les catégories d'intervention en heure et en pourcentage pour les techniciens

    La table "interventions"

    Date Categories Tps (h) Commentaires Technicien (1) Opérateur (2)
    01/04/21 Depannage 1,5 réparé moteur 1
    03/04/21 Preventif 2 remplacé contacteur 1
    08/04/21 Astreinte 2 réarmé thermostat 2
    08/05/21 Graissage 3 tapis et cvonvoyeurs 1
    03/04/21 Automatisme 4 modif chargement tapis 1
    01/03/21 Depannage 12 chaine entrainement 2
    15/04/21 Preventif 3 basculeur colis 1
    02/03/21 Astreinte 4 climatisation salle server 1
    28/04/21 Graissage 2,5 convoyeurs decharge 2
    14/03/21 Automatisme 2 chaufferie 1
    30/04/21 Depannage 6 éclairage hall 1
    03/04/21 Preventif 10 remplacé contacteur 1
    01/03/21 Astreinte 4 chauffage salle 2
    30/04/21 Graissage 20 parc véhicule 1
    03/04/21 Automatisme 15 tapis evacuation 1
    01/03/21 Preventif 6 fermeture automatique 1

    le résultat souhaité, les heures et % pour les techniciens (champ = 1) seulement

    Categorie Tps (h) % (h)
    Astreinte 4 5,44
    Automatisme 21 28.57
    Depannage 7.5 10.2
    Graissage 20 27.21
    Preventif 21 28.57

    Merci pour votre aide

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Categorie SUM(Tps) AS Tps_CATEGORIE, 
           100.0 * SUM(Tps) OVER(PARTITION BY Categorie) / SUM(SUM(Tps)) OVER() AS PERCENT
    FROM   ...
    GROUP  BY Categorie
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. calcul pourcentage par rapport une somme partielle
    Par medanas dans le forum QlikView
    Réponses: 1
    Dernier message: 27/06/2014, 10h23
  2. Requete/VBA ? Calcul pourcentage
    Par cigit dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/02/2009, 10h24
  3. Requete Mysql Remplacer null par 0
    Par guigui69 dans le forum Débuter
    Réponses: 1
    Dernier message: 24/09/2008, 06h13
  4. Requeter Mysql sans passer par du sql -xml?-
    Par Malone dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/08/2006, 14h02
  5. Requeter Mysql sans passer par du sql -xml?-
    Par Malone dans le forum Delphi
    Réponses: 2
    Dernier message: 22/08/2006, 14h02

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