我的帖子评分为星级,比例为1比5。我想通过评分来排序帖子,包括投票数量因素(让我们称之为人气)。
我之前曾问过类似的问题,但我没有看到明确的解决方案。非常适合了解可用于此目的的公式,以及它的MySQL等价物。
以下示例有望解释我的需求:
<
(4星,3票)<
(3星,12票)<
(2星,5票)有没有人有解决这个问题的经验?我已经尝试了一些简单的公式(例如 this ),但他们无法“认识到” [5,2.5] 的情况不同和(2.5,0)。我认为使用的函数可能是对数的,但我似乎无法以正确的方式达到它。
任何想法都将受到赞赏。
答案 0 :(得分:2)
对于每个明星计数添加一些权重这样简单的事情就行了,我会说。
我创建了一个简单的表:
╔════╦════════╦════════╦════════╦════════╗
║ Id ║ Name ║ Stars3 ║ Stars2 ║ Stars1 ║
╠════╬════════╬════════╬════════╬════════╣
║ 1 ║ Item 1 ║ 1 ║ 0 ║ 0 ║
║ 2 ║ Item 2 ║ 0 ║ 1 ║ 2 ║
║ 3 ║ Item 3 ║ 0 ║ 2 ║ 5 ║
║ 4 ║ Item 4 ║ 4 ║ 0 ║ 2 ║
╚════╩════════╩════════╩════════╩════════╝
基本上, StarsX 显示特定星的数量。
我做了什么,想一些随机数让它成为 fair-ish 。
现在,一个简单的查询来获得总分:
SELECT *,(stars3*5+stars2*2+stars1) as total_score FROM `posts_with_scores`
我明白了:
╔════╦════════╦════════╦════════╦════════╦═════════════╗
║ Id ║ Name ║ Stars3 ║ Stars2 ║ Stars1 ║ Total Score ║
╠════╬════════╬════════╬════════╬════════╬═════════════╣
║ 1 ║ Item 1 ║ 1 ║ 0 ║ 0 ║ 5 ║
║ 2 ║ Item 2 ║ 0 ║ 1 ║ 2 ║ 4 ║
║ 3 ║ Item 3 ║ 0 ║ 2 ║ 5 ║ 9 ║
║ 4 ║ Item 4 ║ 4 ║ 0 ║ 2 ║ 22 ║
╚════╩════════╩════════╩════════╩════════╩═════════════╝
新闻稿等用similar system was sometimes根据收到的奖牌计算各国的得分。金牌得3分,银牌2分,铜牌得分。