我有一个产品表,其价格为该字段之一。现在我想计算每种产品的评级:
评分介于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;
答案 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;