mysql去掉两个最高分_去掉一个最高分,去掉一个最低分求平均值(trimmean)
时间: 2023-12-22 22:04:05 浏览: 44
假设你有一个名为scores的MySQL表格,包含以下列:id, name, score。
要计算去掉两个最高分和一个最低分后的平均分,可以使用以下SQL语句:
```
SELECT AVG(score) as trimmean FROM (
SELECT score FROM scores
ORDER BY score DESC
LIMIT 2, (SELECT COUNT(*) FROM scores) - 3
) as t;
```
这将按照分数从高到低排序,跳过前两个最高分和一个最低分,然后计算剩下分数的平均值。
注意,如果总记录数小于5,则无法计算trimmean。在这种情况下,上述SQL语句将返回空结果。
相关问题
mysql去掉两个最高分_去掉一个最高分,去掉一个最低分求平均值(trimmean)的函数
你可以在MySQL中创建一个自定义函数来计算trimmean。以下是一个使用存储过程和游标的示例实现:
```
DELIMITER //
CREATE FUNCTION trimmean()
RETURNS DECIMAL(10,2)
BEGIN
DECLARE total DECIMAL(10,2);
DECLARE count INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT score FROM scores ORDER BY score DESC;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET total = 0;
SET count = 0;
OPEN cur;
read_loop: LOOP
FETCH cur INTO score;
IF done THEN
LEAVE read_loop;
END IF;
SET count = count + 1;
IF count <= 1 OR count > (SELECT COUNT(*) FROM scores) - 2 THEN
CONTINUE;
END IF;
SET total = total + score;
END LOOP;
CLOSE cur;
RETURN total / (SELECT COUNT(*) FROM scores) - 3);
END//
DELIMITER ;
```
这个函数将返回去掉两个最高分和一个最低分后的平均分。
要使用这个函数,只需要在MySQL中调用它:
```
SELECT trimmean() as result;
```
注意,这个函数假设表格中至少有5个记录,否则会返回NULL。你可以根据需要自己修改。
去掉最高分 最低分求平均分
在Excel中,去掉最高分和最低分再求平均分可以使用以下步骤:
1. 将数据按照从小到大或从大到小的顺序排列。
2. 选取除去最高分和最低分后的数据范围。
3. 使用AVERAGE函数求出选定范围内的平均值即可。
如果要求符合指定条件的平均分,比如低于80分的数据的平均分,可以使用TRIMMEAN函数。TRIMMEAN函数可以求得截去部分极值后的数据的平均值,即先从数据集的头部和尾部除去一定百分比的数据,然后再求平均值。例如,要去除20%的数据,可以使用以下公式:=TRIMMEAN(数据范围,0.2)