Précédent   Forum du club des développeurs et IT Pro > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/12/2012, 22h34   #1
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Par défaut Comment passer d'une valeur à une autre par une formule mathématique ?

Bonjour,

Dans la base de données de mon site e-commerce, j'ai la valeur d'achat de mes produits "cost" et le prix de vente affiché sur le site "price".

J'aimerais d'une seule manipulation pouvoir appliquer une formule mathématique pour remplir automatiquement mes champs "price" en partant de "cost".

Je m'explique, si par exemple j'ai un article dans ma base avec la valeur "cost" = 1 et la valeur "price" est vide.
Je veux taper une requête SQL qui me donnerait la valeur "price" avec la formule suivante:
price=4,42*cost^(-0,1)
-->> en littéral 4,42 mutiplié par la valeur "cost" exposant (-0,1)

Pas évident à expliquer, mais j'espère que vous pourrez m'aider, car j'ai environ 500 prix à modifier.
Merci.

Cordialement,

Guillaume.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 08h17   #2
seabs
Membre chevronné
 
Inscription : janvier 2009
Messages : 394
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 394
Points : 631
Points : 631
Bonjour,

Citation:
J'aimerais d'une seule manipulation pouvoir appliquer une formule mathématique pour remplir automatiquement mes champs "price" en partant de "cost".
Je pense que la colonne Cost et Price sont dans la même table.

Code :
UPDATE NomTable SET PRICE = COST * 4.42^(0,1) WHERE PRICE = 0 OR PRICE IS NULL
Je ne sais pas pourquoi, tu veux utiliser l'exposant (0,1) car je n'en comprends l'utilité. Il faudra adapter le calcul avec ta base de données qui m'est inconnue, je serais surpris que 4.42^(0,1) ne présente pas une erreur lors du traitement.

Bon courage
seabs est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/12/2012, 14h06   #3
islamov2000
Membre chevronné
 
Avatar de islamov2000
 
Homme islamov islamov
Ingénieur d'études & developpement en informatique
Inscription : septembre 2007
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme islamov islamov
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur d'études & developpement en informatique
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 465
Points : 642
Points : 642
Envoyer un message via Yahoo à islamov2000 Envoyer un message via Skype™ à islamov2000
c'est faciiiiiile

tu mets :


Code :
1
2
UPDATE NomTable SET PRICE = cost*exp(-0.1*ln(4.42))
WHERE PRICE = 0 OR PRICE IS NULL
sachant que cost est un champ.
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
islamov2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 15h41   #4
seabs
Membre chevronné
 
Inscription : janvier 2009
Messages : 394
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 394
Points : 631
Points : 631
Bonjour,

Citation:
UPDATE NomTable SET PRICE = cost*exp(-0.1*ln(4.42))
Je veux bien, mais il me paraît étonnant d'utiliser une formule aussi complexe pour obtenir un prix de vente à partir d'un prix d'achat. Dans la vie de tous les jours, les commerçants se limitent à un simple multiplication du prix d'achat par un coefficient avec un arrondi à € ou au 1/10 €.

@guillaume7684 doit savoir ce qu'il veut obtenir.

A+
seabs est déconnecté   Envoyer un message privé Réponse avec citation 22
Vieux 10/12/2012, 08h52   #5
islamov2000
Membre chevronné
 
Avatar de islamov2000
 
Homme islamov islamov
Ingénieur d'études & developpement en informatique
Inscription : septembre 2007
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme islamov islamov
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur d'études & developpement en informatique
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 465
Points : 642
Points : 642
Envoyer un message via Yahoo à islamov2000 Envoyer un message via Skype™ à islamov2000
Citation:
Envoyé par seabs Voir le message
Bonjour,

Je veux bien, mais il me paraît étonnant d'utiliser une formule aussi complexe pour obtenir un prix de vente à partir d'un prix d'achat. Dans la vie de tous les jours, les commerçants se limitent à un simple multiplication du prix d'achat par un coefficient avec un arrondi à € ou au 1/10 €.

@guillaume7684 doit savoir ce qu'il veut obtenir.

A+
Nous sommes dans le forum le developpez.net et pas dans une supermarche.

Que font les commerçants dans ce site. Et d'où ont ils apris le SQL.

Je porte aux connaissances des non commerçants que l'exposant ou la

puissance (^) n'existe pas dans le SQL, mais à travers une formule mathématique on déduit l'exposant.

expemple:

Code :
1
2
3
4.42^(-0.1)=e( log(4.42^(-0.1)) )
 
                =e(-0.1*log(4.42))
et elle se traduit en SQL comme suite:

Code :
4.42^(-0.1)=exp( -.01*ln(4.42) ).
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
islamov2000 est déconnecté   Envoyer un message privé Réponse avec citation 03
Vieux 10/12/2012, 10h24   #6
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 276
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 276
Points : 13 568
Points : 13 568
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par islamov2000 Voir le message
Je porte aux connaissances des non commerçants que l'exposant ou la puissance (^) n'existe pas dans le SQL
Mais comme on est sur le forum développez.com, avant de distribuer la connaissance il faut commencer par s'enquérir sur le sujet.

Oracle :
Code :
1
2
3
SELECT power(5,-0.1) FROM dual;
 
.851339922520784603355765922715152345425
SQL-Server :
Code :
1
2
3
4
SELECT power(cast(5 AS float),-0.1);
 
----------------------
0,851339922520785
PostGreSQL :
Code :
1
2
3
SELECT power(5,-0.1);
 
0.8513399225207846
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/12/2012, 14h12   #7
islamov2000
Membre chevronné
 
Avatar de islamov2000
 
Homme islamov islamov
Ingénieur d'études & developpement en informatique
Inscription : septembre 2007
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme islamov islamov
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur d'études & developpement en informatique
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 465
Points : 642
Points : 642
Envoyer un message via Yahoo à islamov2000 Envoyer un message via Skype™ à islamov2000
Merci Waldar pour info.
à partir de quelle version supporte la fonction power
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
islamov2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 14h43   #8
seabs
Membre chevronné
 
Inscription : janvier 2009
Messages : 394
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 394
Points : 631
Points : 631
Bonjour,

@islamov2000

Citation:
Nous sommes dans le forum le developpez.net et pas dans une supermarche.
Que font les commerçants dans ce site. Et d'où ont ils apris le SQL.
Je ne vois pas la nécessité d'un tel commentaire, il ne sera d'aucune utilité à @guillaume7684

D'autant que pour trouver le prix de vente, je ne pense pas opportun de multiplier le prix d'achat par 0,862 - Power(4.42, -0.1).

Ecrire du SQL ne veut pas dire sortir des calculs inutilisables en pratique ou qui présente des prix de vente inexacts

A plus
seabs est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 10/12/2012, 14h58   #9
islamov2000
Membre chevronné
 
Avatar de islamov2000
 
Homme islamov islamov
Ingénieur d'études & developpement en informatique
Inscription : septembre 2007
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme islamov islamov
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur d'études & developpement en informatique
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 465
Points : 642
Points : 642
Envoyer un message via Yahoo à islamov2000 Envoyer un message via Skype™ à islamov2000
je m'excuse pour le commentaire, seabs.
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
islamov2000 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2012, 15h44   #10
Rei Ichido
Membre Expert
 
Inscription : août 2009
Messages : 1 012
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 1 012
Points : 1 532
Points : 1 532
Citation:
Envoyé par seabs Voir le message
Je veux bien, mais il me paraît étonnant d'utiliser une formule aussi complexe pour obtenir un prix de vente à partir d'un prix d'achat. Dans la vie de tous les jours, les commerçants se limitent à un simple multiplication du prix d'achat par un coefficient avec un arrondi à € ou au 1/10 €.
En même temps, dans "la vie de tous les jours", les petits commerçants n'ont pas forcément une base de données pour gérer leurs prix.
Quant aux grandes surfaces, elles ont en effet des BDD (parfaitement colossales, d'ailleurs, sur les grandes enseignes), et les méthodes dites de "pricing" sont plutôt opaques, et peuvent faire intervenir tout type de formule aussi arbitrairement compliquée que souhaitée.

Citation:
@guillaume7684 doit savoir ce qu'il veut obtenir.
Là dessus, je suis d'accord, mais il se trouve justement que le posteur originel a fait une demande claire incluant l'utilisation de la puissance, à laquelle répond @islamov2000 - même si en l'occurence le passage par exp & log est inutile.
On peut tout à fait l'interpeller sur la nécessité d'utiliser une telle formule, pour autant je ne vois pas de raison d'aller vers ce genre de commentaire :
Citation:
Ecrire du SQL ne veut pas dire sortir des calculs inutilisables en pratique ou qui présente des prix de vente inexacts
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 11/12/2012, 16h46   #11
pacmann
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 424
Points : 2 433
Points : 2 433
Salut,

Je pense qu'outre la nécessité ou non de connaître ces détails, ça attise la curiosité, et comme on vient apporter une solution, on peut aussi poser gentiment la question.

power(x, -0.1) est une fonction décroissante de x, ce qui veut dire que plus le coût est élevé, plus le prix est bas.
Bref, moi je veux le nom de ce commerce pour pouvoir aller faire mes courses
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 11/12/2012, 21h52   #12
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Bonsoir,

Je suis désolé ne ne pas être revenu plus tôt, mais je n'ai pas été averti par mail qu'il y avait des réponses !!!

Je lis toutes les réponses et reviens vers vous.
Merci.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2012, 22h10   #13
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Citation:
Envoyé par seabs Voir le message
Bonjour,



Je veux bien, mais il me paraît étonnant d'utiliser une formule aussi complexe pour obtenir un prix de vente à partir d'un prix d'achat. Dans la vie de tous les jours, les commerçants se limitent à un simple multiplication du prix d'achat par un coefficient avec un arrondi à € ou au 1/10 €.

@guillaume7684 doit savoir ce qu'il veut obtenir.

A+
Bonsoir,

En effet ma demande peut paraitre louche, mais je ne veux pas appliquer la même marge selon si le prix d'achat d'un produit est 0,05€ ou alors de 50€.
Car je conçois bien de vendre 100€ un article acheté 50€, mais pas vendre 0,10€ un article acheté 0,05€ !!!

Du coup je veux appliquer une marge dégressive plus le prix d'achat augmente. Et cela grâce à une formule avec exposant.

Surtout que cette formule sera modifiée à chaque opération d'import, car beaucoup de paramètre influence mon prix d'achat: taux de change, transit en bateau, douanes, ...

Alors je vois que vous m'avez proposé pas mal de formule, mais avant de les essayer une à une, les avez-vous essayé?

Merci beaucoup pour votre participation.

Cordialement,

Guillaume.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2012, 22h21   #14
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Citation:
Envoyé par pacmann Voir le message
Salut,

Je pense qu'outre la nécessité ou non de connaître ces détails, ça attise la curiosité, et comme on vient apporter une solution, on peut aussi poser gentiment la question.

power(x, -0.1) est une fonction décroissante de x, ce qui veut dire que plus le coût est élevé, plus le prix est bas.
Bref, moi je veux le nom de ce commerce pour pouvoir aller faire mes courses
Bonjour,

Non, en fait plus le prix d'achat est élevé et plus la marge est faible, avec une marge minimum bien sure. Mais je définis une courbe et la formule avant sur excel.

Merci.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 07h48   #15
seabs
Membre chevronné
 
Inscription : janvier 2009
Messages : 394
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 394
Points : 631
Points : 631
Bonjour,

Citation:
En effet ma demande peut paraitre louche, mais je ne veux pas appliquer la même marge selon si le prix d'achat d'un produit est 0,05€ ou alors de 50€.
Car je conçois bien de vendre 100€ un article acheté 50€, mais pas vendre 0,10€ un article acheté 0,05€ !!!
Je comprends ta démarche, mais la réponse faite ne répond pas à ton souhait car pour un article acquis 50 €, nous aurons un prix de vente de 2,989 € (Sauf erreur de ma part). Ce n'est certainement pas le but recherché.

Si tu pouvais donner la formule que tu utilises sur Excel, nous pourrions l'adapter en SQL.

A+
seabs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 10h16   #16
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 573
Points : 25 573
Envoyer un message via MSN à CinePhil
En fait, j'ai l'impression que c'est la formule de calcul de la marge et non pas du prix.
Et si c'est le cas, ça fait quand même une marge faible et encore plus faible quand le coût est élevé. Bizarre comme gestion !

Quand je travaillais dans une entreprise d'installation électrique, la direction nous indiquait chaque année un taux de marge objectif sous lequel il ne fallait pas descendre, sauf cas exceptionnels, et qui correspondait à la couverture des coûts de structure (bâtiments, personnel non productif, énergie...). La négociation commerciale commençait en principe après avoir appliqué ce taux de marge minimum au prix de revient (matière + personnel sur le projet).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2012, 22h23   #17
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Bonjour,

@CinePhil: en effet tu as raison ma formule donne bien la marge à applique à mon prix d'achat.

@seabs: voilà la formule exacte: price = cost*(4,44*cost^(-0,1))

Exemple: si mon coût d'achat est de 0,05€ le prix de vente sera de 0,30€
Exemple: si mon coût d'achat est de 50€ le prix de vente sera de 150€

Merci.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 22h41   #18
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 573
Points : 25 573
Envoyer un message via MSN à CinePhil
Euh... pour 50 euros de coût, je calcule 191,25 € de prix.

En plus, tu as écrit précédemment :
Citation:
Car je conçois bien de vendre 100€ un article acheté 50€, mais pas vendre 0,10€ un article acheté 0,05€ !!!
Et dans le dernier message :
Citation:
Exemple: si mon coût d'achat est de 0,05€ le prix de vente sera de 0,30€
L'inflation est galopante dans ton pays !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 23h28   #19
guillaume7684
Invité de passage
 
Inscription : juin 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 73
Points : 4
Points : 4
Dans mon premier message, les valeurs étaient juste à titre d'exemple.

Pour moi: 4,44*50^(-0,1)=3

Merci.
guillaume7684 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 08h24   #20
seabs
Membre chevronné
 
Inscription : janvier 2009
Messages : 394
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 394
Points : 631
Points : 631
Bonjour,

Ta première formule était
et la seconde
Code :
price = cost*(4,44*cost^(-0,1))
Ce qui n'est pas la même chose

Même avec la nouvelle formule, nous n'arrivons pas à tes exemples

Citation:
Exemple: si mon coût d'achat est de 0,05€ le prix de vente sera de 0,30€
Exemple: si mon coût d'achat est de 50€ le prix de vente sera de 150€
Si j'ai compris, tu veux utiliser une marge dégressive, c'est-à-dire plus le prix d'achat est élevé plus le taux de marge est faible (Article à 50 € vendu 150 soit taux de marge 66 %) et inversement pour prix d'achat plus faible (Article à 0,05 € vendu 0,30 € soit marge 83 %)

Mon explication est-elle en conformité avec tes souhaits ?

Enfin là, nous ne sommes plus dans le bon forum, car il n'y a pas un souci SQL qui me semble résolu, mais simplement une difficulté de calcul du prix de vente

A+
seabs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h23.


 
 
 
 
Partenaires

Hébergement Web