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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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
    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 461
    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 461
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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
    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
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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
    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
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    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.

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