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

Oracle Discussion :

Complément Fonction Coalesce


Sujet :

Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut Complément Fonction Coalesce
    Bonjour,
    Tout d'abord merci pour ceux qui accorderons quelques minutes de leurs temps à la lecture de ce post.


    Au risque de passer pour bête j'aurais bien besoins de quelques informations au niveau de la fonction Coalesce
    Je sais d'ores et déjà quelle est utilité et intérêt de cette fonction (remplacement de l'expression recherche si valeur inexistante).

    Par contre, si nous prenons la requête ci-dessous comme exemple, ce que je comprends beaucoup moins voir même pas du tout, c'est l'utilisation du chiffre "1 -" avant Coalesce.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT F.CLI_ID,
          (LIF_QTE * LIF_MONTANT * ((1 - COALESCE(LIF_REMISE_POURCENT/100, 0)))
                                           - COALESCE(LIF_REMISE_MONTANT, 0)) AS CA
    FROM   T_FACTURE F
           INNER JOIN T_LIGNE_FACTURE L
                 ON F.FAC_ID = L.FAC_ID
    WHERE  EXTRACT(YEAR FROM F.FAC_DATE) = 2000;
    Pour le 0 je comprends parfaitement sont utilité ici, donc rien ne me choque, Par contre
    - Quel l'intérêt de ce chiffre "1 -" ?
    - Est-ce une valeur à reprendre systématiquement ou est-elle juste pour illustrer cette exemple ?

    PS : Je travail sur la base-exemple proposée par le site, disponible ici http://sqlpro.developpez.com/cours/bddexemple/.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Le 1 ici n'a aucun lien particulier avec COALESCE, il est juste là pour une question d'arithmétique des pourcentages.

    Si vous avez un taux de remise de 30 (% étant sous entendu) et que vous devez calculer le prix remisé sur une somme de 500, vous pourrez faire :
    500*(1 - 30/100), autrement dit 500*0,7.
    Dans ce contexte, 1 représente 100%. Bien sûr, si le taux de remise vaut 0, cela revient à 500*1.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    Merci pour ta réponse Pomalaix, mais au risque de te paraitre très con en arithmétique (ce que je suis probablement d'ailleurs ) Je dois bien avouer que je ne comprends pas grand chose à ton explication.
    Autant 500*0,7 me paraissent simple et conpréhensible si je souhaite obtenir 30% de réduction.
    Autant je suis incapable de comprendre cette exemple "500*(1 - 30/100)"

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Si le taux de pourcentage de remise est de 27.7953274, à combien faites-vous le prix final ?

  5. #5
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    En appliquant la remise de 27.7953274 Sur un prix initial de 500, j'obtiens un prix final de 361.023363
    500*27.7953274/100 = 138.976637
    500-138.976637 = 361.023363

    ou alors
    100-27.7953274 = 72,2046726
    500*0,722046726 = 361.023363

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Le résultat n'est pas important.

    Le but était de vous faire mettre le doigt que pour appliquer 30% de réduction, faire * 0.7 est une opération de tête simple.
    Avec une réduction de type 27.7953274, vous avez bien été obligé de passer par la formule 500 * (1 - 27.7953274/100) ou son équivalent 500 * (100 - 27.7953274) / 100.

    In fine 1 - x/100 = (100 - x) / 100, c'est pas des maths de très haut niveau quand même.

  7. #7
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    Je suis absolument d'accord avec toi Wadar, c'est pas des maths de très haut niveau quand même.
    Par contre au risque de te paraitre "très con", mais peux importe car je ne cherche qu'à comprendre et assimiler ce que j'entreprends.
    A l'aide de ma ptite "calculatrice", Il m'est beaucoup plus facile de comprendre la démarche entreprise et le résultat que donne ce calcul "500*27.7953274/100 = 138.976637"
    Comme tu à pu le constaté j'ai pu le reproduire, obtenir le bon résultat, donc compris la démarche.

    Par contre, non désolé mais à l'heure actuelle je suis encore incapable d'obtenir le même résultat, pour la formule 500 * (1 - 27.7953274/100) ou son équivalent 500 * (100 - 27.7953274) / 100.

    ps : ...A mois que tu calcul d'abord ce que tu à entre tes parenthèses, puis tu t'attaque aux extrémités ??
    L'obtention du résultat de façon linéaire ne me semble pas possible.

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Avec votre premier calcul 500 * 27.7953274 / 100 = 138.976637 vous calculez le montant de la remise.
    Pour avoir le prix remisé, il faut soustraire ce montant au prix initial, jusque là on est d'accord.

    Soit en posant toutes les opérations en une seule fois :
    500 - (500 * 27.7953274 / 100)

    Qu'on peut aussi écrire :
    500 - 500 * (27.7953274 / 100)

    D'ici on factorise par le prix initial :
    500 * (1 - (27.7953274 / 100))

    Et voilà, on revient sur la formule de Pomalaix.

  9. #9
    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
    Citation Envoyé par jelmouss Voir le message
    A mois que tu calcul d'abord ce que tu à entre tes parenthèses, puis tu t'attaque aux extrémités ??
    C'est bien à ça que servent les parenthèses en algèbre...
    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.

Discussions similaires

  1. [11g] Regroupement avec la fonction coalesce
    Par JGLord dans le forum SQL
    Réponses: 1
    Dernier message: 27/03/2013, 18h35
  2. Fonction COALESCE avec un LIKE
    Par nekro65 dans le forum Langage SQL
    Réponses: 17
    Dernier message: 25/03/2009, 15h15
  3. Complément fonction OutputTo
    Par formidable78 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/12/2007, 21h37
  4. [SQL Server] Fonction COALESCE
    Par evans dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/04/2006, 15h19
  5. Fonction COALESCE
    Par sbeu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2004, 14h27

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