1

我有一个包含正常价格和折扣价格的 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% 变化 = 错误(?)

基本上,这是由于计算的方式,因为我无法弄清楚如何插入更大的数字作为总数(我认为,百分比不是我擅长的东西)。

4

2 回答 2

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
于 2013-03-20T09:57:26.530 回答
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`

在这里演示

于 2013-03-20T10:43:04.727 回答