gpt4 book ai didi

MySQL-获取行和行的平均值

转载 作者:行者123 更新时间:2023-11-29 13:29:58 24 4
gpt4 key购买 nike

首先,我只是警告大家,我在 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

最佳答案

您可以加入计算平均值的查询:

SELECT   i.*
FROM items_table i JOIN (
SELECT category, AVG(score) AS averageScore
FROM items_table
GROUP BY category
) t USING (category)
ORDER BY i.score/GREATEST(5, t.averageScore) DESC
LIMIT 1

关于MySQL-获取行和行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com