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

Langage SQL Discussion :

Calcul de pourcentage


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Par défaut Calcul de pourcentage
    Bonjour

    J'ai la table suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    CREATE TABLE `final` (
      `site_theorique` varchar(11) NOT NULL,
      `equipement_ID` varchar(11) NOT NULL,
      `type` varchar(11) NOT NULL,
      PRIMARY KEY  (`equipement_ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- 
    -- Contenu de la table `final`
    -- 
     
    INSERT INTO `final` (`site_theorique`, `equipement_ID`, `type`) VALUES ('T10001', 'N10001', 'P2'),
    ('T10002', 'N10002', 'P2'),
    ('T10003', 'N10003', 'P2'),
    ('T10004', 'N10004', 'P2'),
    ('T10005', 'N10005', 'P2'),
    ('T10006', 'N10006', 'P2'),
    ('T10007', 'N10007', 'P1'),
    ('T10008', 'N10008', 'P1'),
    ('T10009', 'N10009', 'P1'),
    ('T10010', 'N10010', 'P1'),
    ('T10011', 'N10011', 'P1'),
    ('T10012', 'N10012', 'P1'),
    ('T10013', 'N10013', 'P2'),
    ('T10016', 'N10016', 'P2'),
    ('T10017', 'N10017', 'P3'),
    ('T10018', 'N10018', 'P3'),
    ('T10021', 'N10021', 'P3'),
    ('T10022', 'N10022', 'P3'),
    ('T10023', 'N10023', 'P3'),
    ('T10024', 'N10024', 'P3');
    J'aimerais compter le nombre de chaque "type" (P1, P2 et P3 dans mon cas) et calculer le pourcentage de chacun par rapport au total des types.
    Par exemple, pour connaître le pourcentage du type "P1", je dois effectuer l'opération suivante:
    ((compter le nombre de P1)/(compter le nombre total des P1 P2 et P3))*100

    Pour P2:
    ((compter le nombre de P2)/(compter le nombre total des P1 P2 et P3))*100

    Pour P3:
    ((compter le nombre de P3)/(compter le nombre total des P1 P2 et P3))*100

    Comment traduire ça en SQL sachant que je bosse sur une BDD MySQL? Merci.

  2. #2
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut Exemple
    Est-ce que tu n'as que des P1 P2 et P3 dans ta base?
    Si oui, voici un exemple de ce que tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    --Tu comptes tous tes P1
    DECLARE @t1 float
    SET @t1=cast((select COUNT(*) from final where type='P1') as float)
     
    --Tu comptes toutes tes lignes
    DECLARE @t2 float
    SET @t2=cast((select COUNT(*) from final) as float)
     
    --Tu calcules ton pourcentage
    DECLARE @t3 float
    SET @t3=(@t1/@t2)*100

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT
          (NbParType.Nb_P1/NbParType.Nb_Total)*100 as Pct_P1,
          (NbParType.Nb_P2/NbParType.Nb_Total)*100 as Pct_P2,
          (NbParType.Nb_P3/NbParType.Nb_Total)*100 as Pct_P3
    FROM 
    (
        SELECT
              sum(CASE type 
                       WHEN 'P1' THEN 1
                       ELSE 0
                  END) AS Nb_P1,
              sum(CASE type 
                       WHEN 'P2' THEN 1
                       ELSE 0
                  END) AS Nb_P2,
              sum(CASE type 
                       WHEN 'P3' THEN 1
                       ELSE 0
                  END) AS Nb_P3,
              count(*) AS Nb_Total		   
        FROM final
    ) NbParType

  4. #4
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT type, count(*) / (select count(*) from final) * 100
    from final 
    group by type

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Par défaut
    Citation Envoyé par chrifo Voir le message
    Une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT type, count(*) / (select count(*) from final) * 100
    from final 
    group by type
    Comme je ne connais pas les types que j'ai, j'ai opté pour cette méthode. Merci pour votre aide

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

Discussions similaires

  1. Calcul de pourcentages
    Par Lypertrophie dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 30/06/2006, 11h25
  2. Reqête avec un calcul de pourcentage
    Par jean-pierre96 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2006, 13h00
  3. Réponses: 1
    Dernier message: 10/01/2006, 20h35
  4. calcul de pourcentage
    Par PAUL87 dans le forum Access
    Réponses: 12
    Dernier message: 20/09/2005, 19h50
  5. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 16h43

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