业务场景:期末考试,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

去掉最高分最低分求平均分相关推荐

  1. 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...

    在各种赛事评分时,为了公平起见,一般情况下,都需要去掉一个最高分和一个最低分,再来求平均分,这时候,如果用平时熟悉的求和sum函数和最大max最小min函数组合,当然也是能够求得出来的.但是会感觉没那 ...

  2. python去掉最高分和最低分求平均飞_Excel里去掉最高分最低分再求平均分教程

    求平均分是Excel里再平常不过的操作了.使用EXCEL,不仅可以求简单的平均分,即使要去掉几个最高分.最低分再求平均分,那也是很容易的事情. 一.直接求平均分 如果要对指定的数据直接求平均分,那显然 ...

  3. python去掉最高分和最低分_去掉一个最高分,去掉一个最低分求平均值(trimmean)...

    如下图: 演讲比赛,要求去掉一个最高分,去掉一个对低分后求平均值.当然这个太简单了,我们可以用max求出最大值,用min求出最小值,然后sum求出数据总和,用(总和-最大值-最小值)/(数据总个数-2 ...

  4. excel 求去掉最高分最低分后的平均值

    在显示结果的单元格输入下面的公式=TRIMMEAN(A2:F2,1/5*2) 其中5是数值(裁判打分)的个数. 2是需要去除极值的个数. 1/5*2便是数据点集中所要消除的极值比例. 下面是去掉4个极 ...

  5. python去掉一个最高分和最低分求平均数_excel去掉一个最高分和最低分求平均数 - 卡饭网...

    怎么快速计算考试成绩的最高分.最低分.平均分? 怎么快速计算考试成绩的最高分.最低分.平均分? 我们可以使用Excel工作表快速计算出学校考试成绩的最高分.最低分和平均分,不需要逐个计算和核查,下面就 ...

  6. Java:学校比赛现场有10个评委,要求从键盘输入10个分数作为评委对一名选手的打分,评分规则为去掉一个最高分,去掉一个最低分,求该名选手平均分,打印到控制台。

    Java练习: 学校比赛现场有10个评委,要求从键盘输入10个分数作为评委对一名选手的打分,评分规则为去掉一个最高分,去掉一个最低分,求该名选手平均分,打印到控制台. 代码如下: package co ...

  7. python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...

    原标题:去掉最高分和最低分算平均分并进行排名 "去掉一个最高分,去掉一个最低分",是很多赛事的一个普遍采用的计分方法,目的是防止不正当的评分影响比赛的公正性. 去掉最高分.最低分后 ...

  8. C语言输入10个分数 去掉最高分,vb输入10个评委给出的分数,去掉最高分和最低分,计算平均分并输出...

    如何用vb设计一个程序,可以将输入的10个以上的数字 按大小顺序排列出来,可以给我思路,也可以给我答案. 其实从思想上来说,就是一个排序的思路问题.排序的方法有很多.说2个最简单的(设让结果从小到大排 ...

  9. 在歌唱比赛中,共有10位评委进行打分(0-100分的区间),在计算歌手得分时, 去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均, 就是该选手的最终得分。输入每个评委的评分,求某选

    package kaoshi3; import java.util.Scanner; /**  * 在歌唱比赛中,共有10位评委进行打分(0-100分的区间),在计算歌手得分时,  去掉一个最高分,去 ...

最新文章

  1. 电子电路基础复习 —— 三极管
  2. 字符串string类使用总结
  3. Python:self理解
  4. A*B Problem(洛谷-P1303)
  5. scrapy Crawl_spider
  6. HDU1290 重建希望小学【递推+打表】
  7. 快速搭建python文件服务器,上传下载文件,快速搭建。
  8. Unity3D 太空射击游戏学习笔记
  9. 手机上最好用的五笔输入法_手机输入法正在暴露你的年龄,九宫格和全键盘,你用的是哪一种?...
  10. 第10 章 量化的项目管理
  11. 路由器的工作原理(计算机网络-网络层)
  12. 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  13. python通过Ctypes 模块 调用C++动态链接库,遇到的access violation reading 0x0000000000000000解决方案
  14. android专项测试题,Android期末测考试试题(附带答案).doc
  15. ef 使用left join的两种写法
  16. 基于auto.js微信点赞
  17. 开学第一周——自我介绍
  18. jpeg2000算法详解(1)
  19. css案例--旋转木马
  20. 神策广告投放(用户行为)分析经验总结

热门文章

  1. 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
  2. 美国大学计算机科学专业排名2020,美国大学计算机专业排名2020情况如何?
  3. 重装Win10系统有教程吗?如何在线一键重装Win10系统?
  4. uml sequence diagram
  5. RSS/RPS/RFS究竟是个什么东西
  6. GIT修改用户名——idea提交git用户名/名字不正确
  7. 学生用计算机有哪些小游戏,学生时期:那些霸占你信息课的4款游戏,最后一款,你肯定玩过...
  8. Zeppelin Job monitor打开
  9. 基于TextRank的抽取式文本摘要(英文)
  10. 前端性能指标:白屏和首屏时间的计算