嘿,我正在尝试弄清楚如何从 mysql 中获得一些排名结果。 我有一个数据库表:
编号 |开斋节 |结果
eid
为参赛者编号(本项目为5位评委的结果),
结果是 [0, 100]
区间的值。
所以,每个参赛者会有5个结果,我想去掉最高和最低的结果,只留下中间的3个。
然后我将 3 个结果加在一起,这就是进入点。
在一天结束时,我需要获得从最高结果到最低结果的参赛人数列表。
到目前为止我得到了这个:
SELECT * FROM burnout_results WHERE result NOT IN( (SELECT MIN(result)
FROM burnout_results WHERE eid='1'),
(SELECT MAX(result) FROM burnout_results WHERE eid='1') ) AND eid='2' LIMIT 3
但这样我一次只能查找 1 个 eid
,我必须在 php 中将结果相加,但我无法从那里计算出如何对它进行排名。 ..
这主要可以在 mysql 查找中完成吗?感谢您的帮助。
最佳答案
尝试使用聚合:
SELECT eid, SUM(result)-MIN(result)-MAX(result) AS r FROM burnout_results GROUP BY eid;
这样,对于每个 eid
,您将所有结果相加,减去最高值和最低值
关于php - 进行 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272413/