基于两个数字的百分比变化,总未知数(MySQL)

时间:2013-03-20 09:51:56

标签: mysql

我有一个包含常规价格和折扣价格的MySQL数据库。我正在尝试计算从这些数字中最高的数字到当前最低数字的百分比变化。

当正常价格低于折扣价时,百分比不正确。

代码:

SELECT brand_price, brand_discount_price,
((brand_discount_price - brand_price)/brand_price) * 100 as percentage
FROM brand

我如何调整计算以考虑哪一个是当前的“总数”?

我想我需要更改计算或有条件地比较最高/最低的两个数字并动态更改SELECT?有什么想法吗?

示例数据:

brand_price     brand_discount_price percentage
8.7451          9.3345              6.73977427%
7.9537          7.9538              0.00125728%
4.5832          2.2482              -50.94693664%
3.2331          11.8412             266.24911076%

示例:

品牌价格50 折扣价100

(100 - 50/50)* 100 = 100%变化

品牌价格100 折扣价50

(50 - 100/50)* 100 = -100%变化=错误(?)

基本上,由于计算的方式,因为我不知道如何插入更大的数字作为总数(我认为,百分比不是我擅长的)。

2 个答案:

答案 0 :(得分:3)

只需使用if(虽然我不太清楚为什么常规价格会低于折扣价格):

SELECT brand_price, brand_discount_price,
IF(brand_discount_price > brand_price, ((brand_discount_price - brand_price)/brand_discount_price) * 100, ((brand_price - brand_discount_price)/brand_price)*100)  as percentage
FROM brand

答案 1 :(得分:2)

我发现您的价格,折扣价格和百分比也有问题,

这里有一个例子:

      $15.00      original price   
     - 1.50       - discount       // here the discount should be lower then original price.
      $13.50       sale price

以及您在查询中想要从原始价格中获得折扣金额百分比的百分比。所以它就像那样

     SELECT round(brand_price,4) as price, round(brand_discount_price,4) as discount,
     if(brand_discount_price < brand_price,
     round((( brand_discount_price ) * 100) / brand_price , 2), 'discount chould be   less then the original price') as percentage
      FROM `brand`

DEMO HERE