2017-01-30 13 views
1

我有一個產品表有作爲該領域之一的價格。現在我想要計算等級爲每個產品:根據價格給出從0到10的平均評分

  • 評分爲10。0至

  • 具有最高價值的產品將有等級爲0的產品以最低的價格都會有等級10 。

  • 的產品數量可以多於100。

例如,有5種產品的價格爲500,40,350,100, 60.所以這裏的產品價格40的評級是10,產品的價格500的評級是0.

我使用MYSQL作爲我的數據庫和前端使用PHP。

如何計算其他產品的評級,並考慮此最小和最大價格。任何人都可以建議我如何做到這一點與MySQL?

我嘗試過以下查詢。但在最高價格有10作爲評級和最低價格有0作爲評級。但我希望最低價格爲10分。

SELECT 
    id, 
    IF ([email protected], 10, (((price*10)/@maxprice)-((@minprice*10)/@maxprice))) as price_rating 
FROM products; 
(SELECT @maxprice:= MAX(price) FROM products) as maxprice; 
(SELECT @minprice:= MIN(price) FROM products) as minprice ORDER BY price DESC; 
+0

除了這個問題是關閉主題,因爲它是太寬泛,你不說你想如何排名98的產品排名2至9 – RiggsFolly

+0

它不像排名。評分可能是像小數像2.01,0.994等 – Kittu

+0

你有沒有嘗試完成這一點嗎?如果是這樣,請提供[最簡單,完整且可驗證的示例](http://stackoverflow.com/help/mcve)。 – thodic

回答

1

我還沒有完全知道你想要什麼,但是這將一定範圍的價格(線性)映射從0到10,其中0是最高價格,10爲最低:

SELECT @maxprice:= MAX(price) FROM products; 
SELECT @minprice:= MIN(price) FROM products; 

SELECT 
    id, 
    10 - 10 * ([email protected])/(@[email protected]) as price_rating 
FROM products; 
+0

非常感謝! :)是的,我只想要這個 – Kittu