2016-12-04 1 views
0

Dans Oracle, je veux écrire une requête SELECT qui va trouver 1,75% de réduction sur une colonne existante qui a des nombres entiers dans chaque ligne et arrondis au dollar le plus proche.Ajouter une nouvelle colonne qui trouve le pourcentage de la valeur dans la colonne existante

J'ai une partie de ma requête vers le bas, mais je n'arrive pas à comprendre comment écrire la formule pour effectuer le calcul du pourcentage de réduction.

SELECT R.LAST_NAME, O.RENT_FEE, ROUND(RENT_FEE,0) AS DISCOUNT 
FROM ROOM_UNIT R, OWNER O 
WHERE R.OWNER_NUM = O.OWNER_NUM 
+0

Je ne peux pas croire que vous demandez comment appliquer un pourcentage à un nombre ... d'ailleurs, vous avez posté la [même question] (http://stackoverflow.com/questions/40711290/diminuer-toutes-valeurs-dans-une-colonne-par-1-pourcentage) il y a quelques jours. S'il vous plaît faire un peu d'effort et d'étudier au moins les bases – Aleksej

Répondre

2

De cours de mathématiques, nous savons que l'actualisation par x pour cent équivaut à multiplier par

(1-x/100) 

Dans votre cas, l'actualisation de 1,75% des moyens de multiplication par, (1 - 0.0175) ou 0.9825:

SELECT R.LAST_NAME, O.RENT_FEE, ROUND((1 - 0.0175) * RENT_FEE,0) AS DISCOUNT 
FROM ROOM_UNIT R, OWNER O --   ^^^^^^^^^^^^ 
WHERE R.OWNER_NUM = O.OWNER_NUM 
+0

Pourquoi ne pas simplement écrire '(1 - 0.0175) * RENT_FEE'? Il semble plus clair et moins enclin à l'erreur. –

+1

@GordonLinoff Merci beaucoup pour votre suggestion! Il est en effet plus facile à lire, et l'optimiseur optimisera la soustraction. – dasblinkenlight