嘿我试图弄清楚如何从mysql获得一些排名结果。 我有一个db表:
id |开斋节结果
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查找中完成吗?谢谢你的帮助。
答案 0 :(得分:1)
尝试使用聚合:
SELECT eid, SUM(result)-MIN(result)-MAX(result) AS r FROM burnout_results GROUP BY eid;
这样,对于每个eid
,您将所有结果相加,减去最高值和最低值