我有一张有选票的 table 。投票只是数字(没有文字,没有是/否等)。
原始数据示例
id | question_id | vote
1 | 63 | 80
2 | 63 | 13
3 | 63 | 992
...
100 | 63 | 900000
101 | 63 | 5
我想得到一个特定问题的平均值,但忽略了最高和最低 X% 的选票(例如:省略 5% - 所以对于每 100 票,我平均只得到 90 票) - 不是通过 id,而是通过投票数的最大值和最小值。
在上表中,900000 和 5 不会被计入 avg(假设他们是这个问题的最高票和最低票)
最佳答案
这个查询应该完成工作(see example on SQL Fiddle) :
SELECT AVG(vote) FROM
(
SELECT vote, @r:=@r+1 AS rownum
FROM votes, (SELECT @r:=0) x
WHERE question_id = 63
ORDER BY vote
) x
WHERE rownum > @r * .05
AND rownum <= @r * .95
;
子查询使用变量为每条记录分配一个行号,外部查询删除最低和最高的数字。
关于mysql - 选择平均投票但使用 mysql 忽略前 5% 和后 5% 的选票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14109547/