gpt4 book ai didi

php - 按两列排序 - 使用评分最高的平均评分

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

我想显示最高平均评分 (rating_avg) 和评分数量 (rating_count)。对于我当前的脚本,无论有多少评分,它都会显示最高平均评分 (DESC),这对我的访问者来说毫无用处。

例如它显示:

  1. 项目 1 - 5.0(1 个评分)
  2. 项目 2 - 5.0(2 个评分)

当它应该按评分平均值和评分数量显示前 10 个评分最高的项目时,例如:

  1. 项目 1 - 4.5(356 个评分)
  2. 项目 2 - 4.3(200 个评分)
  3. 项目 3 - 4.0(400 个评分)

这是我现在拥有的:

$result = mysql_query("SELECT id, filename, filenamedisplay, console_dir, downloads, rating_avg, rating_count FROM files WHERE console_dir = '".$nodash."' ORDER BY rating_avg DESC LIMIT 10");

谢谢,我感谢提前提供的任何帮助!

最佳答案

这是一个微妙的问题,也是统计中的一个问题。我所做的通常是将评级降低一个比例标准误差。这些并不完全是比例,但我认为可以应用相同的想法。

您可以使用“p*q 的平方根除以 n”的方法进行计算。如果你不明白这一点,谷歌“比例的标准误差”(或者我可能会建议“使用 SQL 和 Excel 进行数据分析”中的第三章,其中更详细地解释了这一点):

SELECT id, filename, filenamedisplay, console_dir, downloads, rating_avg, rating_count
FROM files cross join
(select count(*) as cnt from files where console_dir = '".$nodash."') as const
WHERE console_dir = '".$nodash."'
ORDER BY rating_avg/5 - sqrt((rating_avg/5) * (1 - rating_avg/5) / const.cnt) DESC
LIMIT 10;

无论如何,看看这个公式是否适合你。

编辑:

好的,让我们将其更改为均值的标准误差。我应该第一次就这样做,但我认为 rating_avg 是一个比例。公式是标准偏差除以样本量的平方根。我们可以在 const 子查询中获取总体标准差:

     (select count(*) as cnt, stdev(rating_avg) as std from files where console_dir = '".$nodash."') as const

这导致:

order by rating_avg - std / sqrt(const.cnt)

这可能行得通,但我更希望每个组的标准差 而不是总体标准差。但是,它会按与样本大小成比例的量降低评级,这应该会改善您的结果。

顺便说一句,去除一个标准偏差的想法是相当武断的。我刚刚发现它产生了合理的结果。例如,您可能更愿意采用标准偏差的 1.96 倍来获得置信区间的 95% 下限。

关于php - 按两列排序 - 使用评分最高的平均评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469597/

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