首先,我会提醒大家,我是MySQL的新手。另外我还没有测试下面的示例查询,所以它们可能不完美。MySQL - 获取行和行的平均值
无论如何,我有一个项目表,每个项目都有一个名称,一个类别和一个分数。每12小时将顶级项目拿走,使用然后移除。
到目前为止,我只是抓住了顶部的项目与
SELECT * FROM items_table ORDER BY score DESC LIMIT 1
与此唯一的问题是,有些类别的偏见和具有普遍较高的分数。我想通过将得分除以平均得分来排序来解决这个问题,而不是仅仅通过得分来排序。类似于
ORDER BY score/(GREATEST(5,averageScore))
我正在尝试找出找到averageScore的最佳方法。我有一个类另一个表所以很明显我的averageScore列添加到和运行一个cronjob,让他们更新和检索他们像
SELECT * FROM items_table, categories_table WHERE items_table.category = categories_table.category ORDER BY items_table.score/(GREATEST(5,categories_table.averageScore)) DESC LIMIT 1
但这种感觉凌乱。我知道我可以找到使用的东西中的所有均线像
SELECT AVG(score) FROM items_table GROUP BY category
什么我不知道,如果是有一些方法来检索均线正好在一个查询。
感谢,
YM
“我与MySQL新秀的东西”你这是什么意思新秀? – Imran
@imran:https://www.google.co.uk/search?q=define%3Arookie – eggyal
我已经使用它约3年,但我是自学成才,并且只在大约6个月前了解了规范化数据库。 –