根据价格给出0到10的平均评分

时间:2017-01-30 15:26:26

标签: php mysql math

我有一个产品表,其价格为该字段之一。现在我想计算每种产品的评级:

  • 评分介于0到10之间。

  • 价值最高的产品评级为0,价格最低的产品评级为10。

  • 产品数量可超过100个。

例如,有5种产品的价格分别为500,40,350,100,60。所以此处价格为40的产品为10,价格为500的产品为0。

我使用MYSQL作为我的数据库,而前端正在使用PHP。

如何根据最低和最高价格计算其他产品的评级。任何人都可以建议我如何用mysql做到这一点?

我尝试过以下查询。但在最高价格中,评级为10,最低价格为0。但我希望最低价格为10评级。

SELECT 
    id,
    IF (price=@maxprice, 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;

1 个答案:

答案 0 :(得分:1)

我还不完全确定你想要什么,但这会将你的价格(线性)映射到0到10的范围,其中0是最高价,10是最低价:

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

SELECT 
    id,
    10 - 10 * (price-@minprice) / (@maxprice-@minprice) as price_rating 
FROM products;
相关问题