去掉最高分最低分求平均分
业务场景:期末考试,5名数学老师对全校考生的数学科目打分,考生的最终分数为5名老师打分去掉一个最高,一个最低然后取平均分,保留两位 小数。
*
直接拿文档最后的语句即可,中间内容记录的是本人的思考过程。
分析:
(有评分记录表,t_pfjd包含bmh(考生密号)、pfyh(评分老师用户)、pf(评分))
1、每一位考生对应有5个打分,去掉最高分和最低分 。通过sql实现的话,肯定要实现分组排序。
首先想到了 group by bmh(考生密号) order by pf(评分)
select bmh,pf from t_pfjd order by bmh,pf
同一位考生的成绩排列到了一起,下一步就是处理去掉最高最低
很明显无法直接去掉,因为要对每一个考生的打分记录里做排序,去掉第一个和第五个。搬出函数:OVER(PARTITION BY… ORDER BY…)
函数实现目的为 按照指定的字段进行分割成,然后分隔成的组内按照某个字段排序
select bmh,pf,ROW_NUMBER() OVER(PARTITION BY bmh ORDER BY pf) rn from t_pfjd
可以看到跟 使用order by 的效果类似,但是可以增加了一个组内排序的序号 rn。
说明下三个函数
select bmh,pf,
–ROW_NUMBER() --先查出的排名在前,没有重复值
–rank()–是跳跃排序,相同数据(这里为sal列相同)排名相同,比如并列第1,则两行数据(这里为rank列)都标为1,下一位将是第3名.中间的2被直接跳过了
dense_rank()–这个是连续排序的,比如两条并列第1,则两行数据(这里为rank列)都标为1,下一个排名将是第2名
OVER(PARTITION BY bmh ORDER BY pf) rn from t_pfjd
我们只去掉一个最高和一个最低,序号不能够重复,所以使用函数ROW_NUMBER() OVER(PARTITION BY… ORDER BY…)
2、排序以及组内排序ok了,下一步要考虑下如何去掉最高最低了。
可以直接 用 rn<> ‘1’ and rn <>‘5’
select * from (select bmh,pf,ROW_NUMBER() OVER(PARTITION BY bmh ORDER BY pf) rn from t_pfjd ) a where a.rn<> ‘1’ and a.rn <>‘5’
ok,已经去除了最高分和最低分。下一步要直接用avg()函数取平均分就可以了
select a.bmh,avg(a.pf) from (select bmh,pf,ROW_NUMBER() OVER(PARTITION BY bmh ORDER BY pf) rn from t_pfjd ) a where a.rn<> ‘1’ and a.rn <>‘5’ group by a.bmh
测试,可以实现。
3、如果评分老师有10个,要去掉两个最高分,两个最低分呢?用以上的语句就不是太工整了,我的目标是最终将语句做成系统功能,通过调整传入参数,计算考生的分数。调整下语句
select a.bmh,avg(a.pf) from (select bmh,pf,ROW_NUMBER() OVER(PARTITION BY bmh ORDER BY pf asc) rn1,–顺序排序
ROW_NUMBER() OVER(PARTITION BY bmh ORDER BY pf desc) rn2–倒序排序
from t_pfjd ) a
where a.rn1>1 --去掉一个最低分,去几个传入数字几
and a.rn2>1----去掉一个最高分
group by a.bmh
去掉最高分最低分求平均分相关推荐
- 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...
在各种赛事评分时,为了公平起见,一般情况下,都需要去掉一个最高分和一个最低分,再来求平均分,这时候,如果用平时熟悉的求和sum函数和最大max最小min函数组合,当然也是能够求得出来的.但是会感觉没那 ...
- python去掉最高分和最低分求平均飞_Excel里去掉最高分最低分再求平均分教程
求平均分是Excel里再平常不过的操作了.使用EXCEL,不仅可以求简单的平均分,即使要去掉几个最高分.最低分再求平均分,那也是很容易的事情. 一.直接求平均分 如果要对指定的数据直接求平均分,那显然 ...
- python去掉最高分和最低分_去掉一个最高分,去掉一个最低分求平均值(trimmean)...
如下图: 演讲比赛,要求去掉一个最高分,去掉一个对低分后求平均值.当然这个太简单了,我们可以用max求出最大值,用min求出最小值,然后sum求出数据总和,用(总和-最大值-最小值)/(数据总个数-2 ...
- excel 求去掉最高分最低分后的平均值
在显示结果的单元格输入下面的公式=TRIMMEAN(A2:F2,1/5*2) 其中5是数值(裁判打分)的个数. 2是需要去除极值的个数. 1/5*2便是数据点集中所要消除的极值比例. 下面是去掉4个极 ...
- python去掉一个最高分和最低分求平均数_excel去掉一个最高分和最低分求平均数 - 卡饭网...
怎么快速计算考试成绩的最高分.最低分.平均分? 怎么快速计算考试成绩的最高分.最低分.平均分? 我们可以使用Excel工作表快速计算出学校考试成绩的最高分.最低分和平均分,不需要逐个计算和核查,下面就 ...
- Java:学校比赛现场有10个评委,要求从键盘输入10个分数作为评委对一名选手的打分,评分规则为去掉一个最高分,去掉一个最低分,求该名选手平均分,打印到控制台。
Java练习: 学校比赛现场有10个评委,要求从键盘输入10个分数作为评委对一名选手的打分,评分规则为去掉一个最高分,去掉一个最低分,求该名选手平均分,打印到控制台. 代码如下: package co ...
- python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...
原标题:去掉最高分和最低分算平均分并进行排名 "去掉一个最高分,去掉一个最低分",是很多赛事的一个普遍采用的计分方法,目的是防止不正当的评分影响比赛的公正性. 去掉最高分.最低分后 ...
- C语言输入10个分数 去掉最高分,vb输入10个评委给出的分数,去掉最高分和最低分,计算平均分并输出...
如何用vb设计一个程序,可以将输入的10个以上的数字 按大小顺序排列出来,可以给我思路,也可以给我答案. 其实从思想上来说,就是一个排序的思路问题.排序的方法有很多.说2个最简单的(设让结果从小到大排 ...
- 在歌唱比赛中,共有10位评委进行打分(0-100分的区间),在计算歌手得分时, 去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均, 就是该选手的最终得分。输入每个评委的评分,求某选
package kaoshi3; import java.util.Scanner; /** * 在歌唱比赛中,共有10位评委进行打分(0-100分的区间),在计算歌手得分时, 去掉一个最高分,去 ...
最新文章
- 电子电路基础复习 —— 三极管
- 字符串string类使用总结
- Python:self理解
- A*B Problem(洛谷-P1303)
- scrapy Crawl_spider
- HDU1290 重建希望小学【递推+打表】
- 快速搭建python文件服务器,上传下载文件,快速搭建。
- Unity3D 太空射击游戏学习笔记
- 手机上最好用的五笔输入法_手机输入法正在暴露你的年龄,九宫格和全键盘,你用的是哪一种?...
- 第10 章 量化的项目管理
- 路由器的工作原理(计算机网络-网络层)
- 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- python通过Ctypes 模块 调用C++动态链接库,遇到的access violation reading 0x0000000000000000解决方案
- android专项测试题,Android期末测考试试题(附带答案).doc
- ef 使用left join的两种写法
- 基于auto.js微信点赞
- 开学第一周——自我介绍
- jpeg2000算法详解(1)
- css案例--旋转木马
- 神策广告投放(用户行为)分析经验总结
热门文章
- 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
- 美国大学计算机科学专业排名2020,美国大学计算机专业排名2020情况如何?
- 重装Win10系统有教程吗?如何在线一键重装Win10系统?
- uml sequence diagram
- RSS/RPS/RFS究竟是个什么东西
- GIT修改用户名——idea提交git用户名/名字不正确
- 学生用计算机有哪些小游戏,学生时期:那些霸占你信息课的4款游戏,最后一款,你肯定玩过...
- Zeppelin Job monitor打开
- 基于TextRank的抽取式文本摘要(英文)
- 前端性能指标:白屏和首屏时间的计算