2017-01-30 14 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