【牛客】SQL142 对试卷得分做min-max归一化

描述

现有试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间):

idexam_idtagdifficultydurationrelease_time
19001SQLhard602020-01-01 10:00:00
29002C++hard802020-01-01 10:00:00
39003算法hard802020-01-01 10:00:00
49004PYTHONmedium702020-01-01 10:00:00

试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分):

iduidexam_idstart_timesubmit_timescore
6100390012020-01-02 12:01:012020-01-02 12:31:0168
9100190012020-01-02 10:01:012020-01-02 10:31:0189
1100190012020-01-01 09:01:012020-01-01 09:21:5990
12100290022021-05-05 18:01:01(NULL)(NULL)
3100490022020-01-01 12:01:012020-01-01 12:11:0160
2100390022020-01-01 19:01:012020-01-01 19:30:0175
7100190022020-01-02 12:01:012020-01-02 12:43:0181
10100290022020-01-01 12:11:012020-01-01 12:31:0183
4100390022020-01-01 12:01:012020-01-01 12:41:0190
5100290022020-01-02 19:01:012020-01-02 19:32:0090
11100290042021-09-06 12:01:01(NULL)(NULL)
8100190052020-01-02 12:11:01(NULL)(NULL)
在物理学及统计学数据计算时,有个概念叫min-max标准化,也被称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数为:

请你将用户作答高难度试卷的得分在每份试卷作答记录内执行min-max归一化后缩放到[0,100]区间,并输出用户ID、试卷ID、归一化后分数平均值;最后按照试卷ID升序、归一化分数降序输出。(注:得分区间默认为[0,100],如果某个试卷作答记录中只有一个得分,那么无需使用公式,归一化并缩放后分数仍为原分数)。

由示例数据结果输出如下:

uidexam_idavg_new_score
1001900198
100390010
1002900288
1003900275
1001900270
100490020

解释:高难度试卷有9001、9002、9003;

作答了9001的记录有3条,分数分别为68、89、90,按给定公式归一化后分数为:0、95、100,而后两个得分都是用户1001作答的,因此用户1001对试卷9001的新得分为(95+100)/2≈98(只保留整数部分),用户1003对于试卷9001的新得分为0。最后结果按照试卷ID升序、归一化分数降序输出。

方法一:使用group by聚合函数

#使用group by聚合函数
select
uid,exam_id,ifnull(round(avg((score-min_score)/differ_score)*100,0),min(score)) as avg_new_score
from
(
    select
    exam_id,min(score) as min_score,max(score)-min(score) as differ_score
    from
    exam_record
    where submit_time is not null and
    exam_id in (select exam_id from examination_info where difficulty='hard')
    group by exam_id
)t1
left join
(
    select uid,exam_id,score
    from
    exam_record
    where submit_time is not null and
    exam_id in (select exam_id from examination_info where difficulty='hard')
)t2
using(exam_id)
group by uid,exam_id
order by exam_id,avg_new_score desc

方法二:使用窗口函数

# 使用窗口函数
select
uid,exam_id,
round(avg(if(max_score=min_score,score,(score-min_score)/(max_score-min_score)*100)),0) as avg_new_score
from
(
    select
    uid,exam_id,score,
    max(score) over(partition by exam_id) as max_score,
    min(score) over(partition by exam_id) as min_score
    from
    exam_record
    where submit_time is not null and
    exam_id in (select exam_id from examination_info where difficulty = 'hard')
)t1
group by uid,exam_id
order by exam_id,avg_new_score desc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

等保测评密评对照:一文看懂两者差异

最近,在去几个客户的办公室交流的方案的时候,都会被重点问到网络安全问题,在方案中“等保”是如何体现和落实的。而且有些客户的领导也会提到“密评”与“等保”如何衔接,是否有先后顺序,可否同时进行测评等问题。 关于“等保”与…

后端常问面经之Java集合

HashMap底层原理 HashMap的数据结构: 底层使用hash表数据结构,即数组和链表或红黑树 当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 存储时,如果出现hash值相同的key,此…

《自动机理论、语言和计算导论》阅读笔记:p28-p48

《自动机理论、语言和计算导论》学习第3天,p28-p48总结,总计21页。 一、技术总结 1.希腊字母(Greek Alphabet包含大小写)。 24个,掌握其读写有助于阅读及数学推导时使用。 2.自动机理论的核心概念 (1)alphabet (2)string (3)language …

【CXL协议-事务层之CXL.mem(3)】

3.3 CXL.mem 3.3.1 Introduction (介绍) CXL 内存协议称为 CXL.mem,它是 CPU 和内存之间的事务接口。 跨芯片通信时,它使用 Compute Express Link (CXL) 的物理层和链路层。 该协议可用于多种不同的内存连接选项,包括…

Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改某个单元格的值

Pandas操作MultiIndex合并行列的excel,写入读取以及写入多余行及Index列处理 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex,写的糊糊涂涂,晕晕乎乎。 是我呀… 记录下,现在终于灵台清明了。 明天在记录下直…

Vue3进阶(叁):关于 Vue2 项目迁移至 Vue3 的几点注意事项

文章目录 一、前言二、Vue3 新特性三、Vue2 安全保障四、迁移方案4.1 迁移辅助工具 vue/compat 库 五、迁移注意事项5.1 升级和兼容性5.2 组件的改变5.3 Composition API5.4 Vue Router5.5 Vuex5.6 其他库和插件5.7 差异示例5.7.1 创建vue5.7.2 定义时间格式全局过滤器5.7.3 vu…

PTAxt的考研路

xt是我院19级专业第一,但他认为保研并不能展示他全部的实力,所以他在22年初试一结束就加入了23考研的队伍中,并且他为了填补我院近些年来无北大研究生的空白,毅然决然决定扛起19级的大旗,在学校百年华诞之际献上他最诚…

平台介绍-搭建赛事运营平台(3)

上文介绍了品牌隔离的基本原理,就是通过不同的前端和微服务来实现。但是确实很多功能是类似的,所以从编程角度还是有些管理手段的。 前端部分:前端部分没有什么特别手段,就是两个独立的项目工程,分别维护。相同的部分复…

maven的依赖继承

先说一下创建子maven工程的步骤 继承 继承的作用:在父工程中,统一管理项目中的依赖信息,进行统一的版本控制 继承的背景是:对一个大型的项目进行了模块拆分,一个project下,创建了很多的module&#xff0c…

绝地求生:PUBG七周年在线人数70万,比六周年增加24万

大家好,我是闲游盒 自从3月PUBG7周年活动开启,PUBG在线人数再次突破70万,黑盒数据显示最高在线人数达704344人,PUBG迎来又一春。 对比6周年的数据而言,7周年的玩家在线人数增长了24万! 而根据数据显示,PUBG…

centos7 装 docker-ce

安装必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 命令会以超级用户的身份安装三个软件包:yum-utils,device-mapper-persistent-…

『笔记』可扩展架构设计之消息队列

前言 众所周知,开发低耦合系统是软件开发的终极目标之一。低耦合的系统更加容易扩展,低耦合的模块更加容易复用,更易于维护和管理。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通…

数据库高级查询【mysql】

数据库高级查询【数据库】 前言版权推荐数据库高级查询行转列统计数据 CASE WHEN 条件 THEN 结果1 ELSE 结果2 END数据库查询带排名建表查询带排名,排名连续查询带排名,排名不连续查询带排名,按行号 Mysql数据库函数常用函数最后 前言 2024-…

(四)图像的%2线性拉伸

环境:Windows10专业版 IDEA2021.2.3 jdk11.0.1 OpenCV-460.jar 系列文章: (一)PythonGDAL实现BSQ,BIP,BIL格式的相互转换 (二)BSQ,BIL,BIP存储格式的相互转换算法 (三…

SQLite中的原子提交(四)

返回:SQLite—系列文章目录 上一篇:SQLite数据库成为内存中数据库(三) 下一篇:SQLite使用的临时文件(二) 1. 引言 SQLite等事务数据库的一个重要特性 是“原子提交”。 原子提交意味着所有数据库都在…

【文献分享】WimPyDD 程序:用于计算 WIMP 直接检测信号的面向对象的 Python 代码

题目:WimPyDD: An object–oriented Python code for the calculation of WIMP direct detection signals 链接:DOI: 10.1016/j.cpc.2022.108342 Program Title: WimPyDD (first release: v1.6.1) CPC Library link to program files: https://doi.…

【哈希专题】【蓝桥杯备考训练】:星空之夜、模拟散列表、字符串哈希、四平方和、扫雷【已更新完成】

目录 1、星空之夜(usaco training 5.1) 2、模拟散列表(模板) 3、字符串哈希(模板) 4、四平方和(第七届蓝桥杯省赛C A组/B组 & JAVA B组/C组) 5、扫雷(Google Ki…

AOI检测是如何逐步渗透进半导体领域

欢迎关注GZH《光场视觉》 一直以来AOI检测都是制造业视觉检测系统产业的核心要素。 AOI检测技术应运而生的背景是:电子元件集成度与精细化程度高,检测速度与效率更高、检测零缺陷的发展需求。 在制造业视觉检测系统中下游应用领域中,AOI检测…

linux-开发板移植MQTT

将源码复制到共享文件夹 链接:https://pan.baidu.com/s/1kvvO-HhDMDXkQ_wlNtyW_A?pwd332i 提取码:332i 以下步骤教程里都写了,我这里边进行,方便大家对照 pc端 1.进入mqtt_lib, 解压open压缩包 2.按照教程复制这一句并运行&…

EAK研发制造片式厚膜高压电阻

用于制造的工艺是丝网印刷和模板印刷。使用的修整是磨料或激光。 使用的电阻材料是氧化钌浆料,阻值范围:-10GQ超出阻值范围可协商订货 阻值精度:士0.5% ~士10%(根据需要可生产士0.1%) 温度系数范围:25ppm/c~80ppmC(25C~105℃)其它要求可协商订货 最高工作温度:22…