什么方式排名"排名"数据集Mysql

时间:2014-12-21 01:56:22

标签: mysql sql algorithm formula

情况如下:

我有一个拥有40.000个城市的数据库。那些城市拥有某些具有价值的房产类型。 例如" mountains"或"海滩"。如果一个城市有很多山脉,那么如果山脉数量较少,那么山峰的价值就会很高。

包含城市名称和属性及值的表格

enter image description here

有了这个,我有一张表,其中包含所有这些属性的avarage值。

我需要做什么:我希望用户搜索具有一个或多个属性的城市,找到最佳匹配并将0到100的分数附加到该城市。

我这样做的方式如下:

1。我首先获得属性的25%,50%和70%值:

_var_[property]_25 = [integer]
_var_[property]_50 = [integer]
_var_[property]_70 = [integer]

2. 然后我需要使用此算法:

_var_user_search_for_properties = [mountain,beach]
_var_max_property_percentage = 100 / [properties user search for]

_var_match_percentage = 0

for each _var_user_search_for_properties


     if [property] < _var_[property]_25 then

          _var_match_percentage += _var_max_property_percentage

     elseif [property] < _var_[property]_50 then

          _var_match_percentage += _var_max_property_percentage / 4 * 3

     elseif [property] < _var_[property]_75 then

          _var_match_percentage += _var_max_property_percentage / 4 * 2

     elseif [property] < 0 then

          _var_match_percentage += _var_max_property_percentage / 4 * 1

     end if 

next

order all rows by _var_match_percentage desc 

问题是:用MySQL执行此操作是否可行? 我如何计算这个&#34;匹配百分比&#34;用它?

或者将所有行和索引从数据库中取出并通过.NET将它们全部循环更快?

1 个答案:

答案 0 :(得分:0)

如果百分比可以存储在数据库中,您可以尝试使用MySQL的LIMIT子句。请参阅http://www.mysqltutorial.org/mysql-limit.aspx