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 :

Récupération d'un pourcentage


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut Récupération d'un pourcentage
    Bonjour,

    Je me trouve face à un soucis surement dû à mon peu d’expérience en SQL, c'est pourquoi je viens solliciter votre aide :

    J'ai une table qui ressemble à ceci :
    Numero Valeur A Valeur B
    1 200 1
    2 199 0
    3 199 1
    4 198 0

    Et je souhaite faire une requete SELECT me ramenant le (Valeur B / Valeur A) * 100 tout en conservant l'historique, soit quelque chose comme ceci :

    Numero Pourcentage
    1 0.5
    2 0.5
    3 1
    4 1

    Pouvez vous me guider dans la réalisation de cette reqûete ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Qu'as-tu déjà essayé comme requête et où rencontres-tu un problème ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Vous n'avez pas précisé votre SGBD, tous n'acceptent pas les fonctions LAG et LEAD, voici une proposition qui devrait fonctionner avec la plupart des SGBD (hors MySQL et Access) :
    J'ai calculé le % en divisant par 2 vu que vous partez de 200, à adapter bien sur si 200 n'était qu'un exemple

    Avec ce jeu d'essais, j'ai un peu enrichi le votre :
    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
    WITH CTE1(COL1, COL2, COL3) AS                    
         (SELECT 1, 200, 001 
          UNION ALL                                   
          SELECT 2, 199, 000 
          UNION ALL                                   
          SELECT 3, 199, 001 
          UNION ALL                                   
          SELECT 4, 198, 000 
          UNION ALL                                   
          SELECT 5, 198, 006 
          UNION ALL                                   
          SELECT 6, 192, 000 
          UNION ALL                                   
          SELECT 7, 192, 021 
          UNION ALL                                   
          SELECT 8, 171, 003 
          UNION ALL                                   
          SELECT 9, 168, 000 
         )
    Et cette CTE pour cumuler COL3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       , CTE2 (C1, C3) AS                                 
         (SELECT COL1, SUM(COL3)                          
          OVER(ORDER BY COL1                              
               ROWS BETWEEN UNBOUNDED PRECEDING           
                        AND CURRENT ROW)                  
          FROM CTE1                                       
         )
    Cette requête produit le résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT C1, ROUND(C3+0,5)/2 as PCT      
    FROM CTE2                       
     
    C1          PCT
     1           0
     2           0
     3           1
     4           1
     5           4
     6           4
     7          14
     8          16
     9          16

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/06/2017, 13h42
  2. [RegEx] Récupération d'un pourcentage optionnel
    Par ddelec24 dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2016, 15h47
  3. Réponses: 2
    Dernier message: 14/03/2012, 10h32
  4. récupération d'images
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/08/2002, 18h36
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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