mysql - 数据库项目排名可移动权重

标签 mysql database aggregate-functions quartile

所以我认为这是一个非常独特的问题。我需要计算一个非常大的项目表(200,000 左右)的排名。他们的“排名”基于几个加在一起的加权属性。 1-4 等级上的 7 个属性(基于其四分位数 1 底部四分位数 4 顶部),每个属性最初均等加权,然后加在一起(7-28 等级)。我想允许用户调整属性的权重,使任何或全部属性的重要性加倍或减半。这可能会改变他们的最终排名。 我想看看是否有人处理过类似的问题或有任何从哪里开始的想法。谢谢!

最佳答案

作为基本设计,我会尝试使您的原始项目及其默认排名不可变。

然后,您在 cron 上运行脚本,以计算它们在某个时间间隔内的排名。这将通过您选择的某种算法来完成,但仅作为示例:

假设一个项目具有以下属性 {“一些零售列表”:{ “id”:“1”, “价格”:“100000.12”, “城市”:“纽约市”, “房间”:“4”, ... “排名城市”:4, “排名价格”:3, “排名质量”:3 } 脚本第一次运行时,其总排名为 20/30

现在,一个用户出现并添加他的输入,然后您将他的提交保存在单独的存储桶中(或使用同一存储桶中的类型): { “类型”:“用户排名” “uid”:3121, “属性ID”:1 “排名城市”:3, "等级价格": 1, “排名质量”:3 } 当您的脚本运行时,您可能希望 50% 的排名来自用户,50% 来自默认排名。因此,您可以将所有用户结果相加,得到平均用户分数,然后与您的分数合并,然后做任何您想做的事情。

您需要保存最终结果 { "type": "userPropertyRank", “属性ID”:1 “排名城市”:3, “排名价格”:3, “排名质量”:3 }

关于mysql - 数据库项目排名可移动权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301606/

相关文章:

mysql - 哪个更快?插入还是更新?

php - 从 in_array 语句获取值

mysql - 合并行并在同一查询中获取其他数据

android - 寻找在云中存储数据并从远程 Android 应用程序访问的简单方法

mysql - 查询以计算表之间的多个总和

具有相同表子查询的 MySQL 更新

java - 如何使用 SWT 和 MySql 在 TreeView 中显示列表值

android - 将 MYSQL 转换为适用于 Android 的 SQLITE 数据库

python - 通过 Group By Pandas 创建两个聚合列

arrays - 编写输入值为数组的 PostgreSQL 聚合函数