1

通常価格と割引価格を含む MySQL データベースがあります。これらの数値の最高値から現在の最低値までの変化率を計算しようとしています。

通常価格が割引価格よりも低い場合、パーセンテージは正しくありません。

コード:

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

現在の「合計」がどれであるかを考慮して計算を調整するにはどうすればよいですか?

計算を変更するか、条件付きで最高/最低の 2 つの数値を比較し、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

そして、元の価格からの割引額のパーセンテージを取得したいクエリで推測するパーセンテージ.soはそのようになります

     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 に答える