MS SQL Server partition by 函数实战三 成绩排名

news2024/11/15 7:24:55

 

目录

需求

范例运行环境

视图样本设计

功能实现

基础数据展示

SQL语句

继续排序

小结


需求

假设有若干已更新考试成绩的考生,考试成绩包括总成绩、分项成绩1、分项成绩2,其它信息包括应聘岗位名称、姓名等信息。现希望根据总成绩计算排名,成绩越高排名越靠前,相同成绩排名并列,另外有并列则按总数递增,如两个第1后是第3。本文将继续介绍利用 partition by  来实现这一需求,主要实现如下功能:

(1)编写视图获取基础数据,包括人员基本信息和考试成绩数据等

(2)通过 partition by 计算排名,得到新的视图

(3)根据其它要求计算新的排名

范例运行环境

操作系统: Windows Server 2019 DataCenter

数据库:Microsoft SQL Server 2016

.netFramework 4.7.2

视图样本设计

视图成绩表 [v_cj] 设计如下:

序号字段名类型说明备注
1zwmcnvarchar职位名称应聘的岗位名称,以此进行分区排序
2xmnvarchar姓名
3kscj1float考试成绩1计算总成绩的一个分项
4kscj2float考试成绩2计算总成绩的一个分项
5kszcjfloat考试总成绩计算排名的依据

功能实现

基础数据展示

选择数据视图 v_cj,在查询分析器示例如下图:

如图这是随时显示的基础数据(未排序)。

SQL语句

排序的SQL语句,代码如下:

select  zwmc,xm,kscj1,kscj2,kszcj
,rank() over (partition by  zwmc order by kszcj desc) as ranktip

from V_cj

运行查询分析器,显示结果如下:

如图框定部分,按最高成绩分值进行倒排序,分值越高排名越高。当成绩相同时则并列排序,下一排序号根据总排序号递增加1,如有两个第6名,则下个排名从第8名开始,以此类推。

关键语句:rank() over (partition by  zwmc order by kszcj desc),按 zwmc (职位名称)分区,以kszcj(考试总成绩) 降序排列,rank() 函数起到了排序功能。

继续排序

如果排序相同,则按分项成绩1继续排序,如果仍然一样则按分项成绩2继续排序,均为降序,SQL 语句如下:

select  zwmc,xm,kscj1,kscj2,kszcj,ranktip
   from V_cj order by zwmc,ranktip,kscj1 desc,kscj2 desc

代码继续将 ranktip 字段封装到 v_cj 视图中,然后按照设计的顺序进行排序,如下图运行分析结果查询:

小结

我们可以通过 row_number函数计算总排序(当排名相同时仍然以分项成绩1和分项成绩2降序计算排名,分值越高排名越靠前),可通过如下语句实现:

select  zwmc,xm,kscj1,kscj2,kszcj,ranktip,
row_number() over (partition by  zwmc order by kszcj desc,kscj1 desc,kscj2 desc) as ranktip2
   from V_cj

关键语句:row_number() over (partition by  zwmc order by kszcj desc,kscj1 desc,kscj2 desc),按 zwmc (职位名称)分区,以kszcj(考试总成绩) 降序排列,第二排序以kscj1(分项考试成绩1) 降序排列,,第三排序以kscj2(分项考试成绩2) 降序排列,row_number() 函数起到了总排序功能。

运行查询分析器,结果显示如下:

如图 ranktip2 字段显示了总排序,ranktip 字段显示了并列排序的情况,分项成绩参与了最终排序规则的实现。

更多 partition by 的聚合统计方法可参考我的文章 《MS SQL Server partition by 函数实战 统计与输出》

至此 partition by 的实例应用我们就介绍到这里,具体使用中我们还需要灵活掌握。感谢您的阅读,希望本文能够对您有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言代码练习(第十一天)

今日练习: 25、用指针方法对10个整数按由大到小顺序排序 26、有一个班,3个学生,各学习4门课,计算总平均分数以及第 n 个学生的成绩 27、有一个3 * 4的二维数组,要求用指向元素的指针变量输出二维数组个元素的值。 用指…

mar3d模型文件问题

上一章使用mars3D模型库 遗留一个问题 部分资源不完整 如果模型没有其他依赖文件会正常加载 若有其他依赖就会报错 正常获取到的 缺少文件的 经过观察在gltf文件中发现缺失的是这几个文件 还是通过脚本下载 脚本实例 const fs require(fs); const path require(path); co…

Idea中修改Jsp文件的头部注释模版

文章目录 方法1,启动idea,单击“file”,选择“settings”2,选择Editor——File and Code Templates——other——Jsp files——jsp File.jsp。此时编辑如下图所示的右上区域即可修改模板。 每天学一个小技巧 方法 1,启…

FL Studio 24汉化破解版 v24.4.1.4285(附汉化破解补丁)

FL Studio 24.4.1.4285(汉化破解版是一款无比专业的音乐制作软件,它无论是在功能上还是用户界面都是在业内数一数二的。就拿它的用户界面来说,是目前同类软件中唯一做到100%矢量化,这样能更好地用在4K,5K甚至8K显示器上&#xff0…

力扣面试经典算法150题:Z 字形变换

Z 字形变换 今天的题目是力扣面试经典150题中的数组的中等难度题: Z 字形变换。 题目链接:https://leetcode.cn/problems/zigzag-conversion/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个给定字符串 s 根据给定的行…

Jmeter 的 jar 包开发环境搭建

01 JDK环境变量配置 JAVA_HOMEE:\Program Files\Java\jdk1.8.0_102 Path%JAVA_HOME%\bin; CLASSPATH.;%JAVA_HOME%\lib\dt.jar;.;%JAVA_HOME%\lib\tools.jar 验证环境变量有没有生效:看到如下信息说明 JDK 环境变量已经生效 02 配置 maven 环境 1、下载地址&…

js中数组的定义及使用

数组的定义 Array 存储按位存储,紧密结构,在数组中查找元素,就必须要遍历数组,查找速度慢。 优点可以根据当前元素找到前一个或者后一个元素,可以排序 数组引用对象的是强引用,存储的是她的引用地址 length属性可读可…

TF | SD 卡出现无法删除的文件,乱码文件该如何处理 macOS

TF | SD 卡出现无法删除的文件,乱码文件该如何处理 macOS 一、问题描述 最近手头有张用在 Miyoo 掌机上的游戏 TF 卡,在macOS 系统下在回收站中出现了几个特殊文件名的文件,始终无法删除。 二、试着解决 我试过了网上的所有方法都无法删除…

rv1126-rv1109-mkcramfs-mkfs.cramfs-打包文件系统

事情是这样的: 定制了文件系统打包功能;然后我是根据这个指令 fakeroot mkfs.cramfs rootfs_glibc_rv1126/ rootfs.img mkfs.cramfs rootfs_glibc_rv1126/ rootfs.img 起因就是这个fakeroot; 不加的话打出来的rootfs.img是没有用户权限的 然后我根据fakeroot mkfs.cramfs ro…

米壳AI:跨境电商日本市场必备神器!

各位跨境电商小伙伴们,在开拓日本市场的过程中,产品图片的翻译问题是不是常常让你感到困扰呢? 别着急,今天就给大家推荐一个超棒的在线翻译工具--米壳AI,它必将成为你跨境之路上的得力助手,让你如虎添翼。…

网络-多路io

了 fcntl 函数来操作文件描述符的状态标志,其中主要是为了设置非阻塞模式。下面是对 fcntl 函数及其参数的详细解释: fcntl 函数 fcntl 是一个用于操作文件描述符的系统调用,可以用来设置或获取文件描述符的各种属性。其原型如下&#xff1…

Django学习实战篇二(适合略有基础的新手小白学习)(从0开发项目)

前言: 从这一章开始,我们来创建项目typeidea,我把它放到了GitHub上。强烈建议你也到GitHub上注册一个账号(如果没有的话),然后创建这样的项目。当然,你也可以起一个属于自己的名称。这个项目就是…

tensorrt plugin

自定义plugin 流程 首先明确要开发的算子,最好是 CUDA 实现;继承 IPluginV2DynamicExt / IPluginV2IOExt类实现一个Plugin 类,在这里调用前面实现的算子;继承 IPluginCreator 类实现一个 PluginCreator 类,用于创建插…

【数据结构取经之路】布隆过滤器BloomFilter原理、误判率推导、代码实现

目录 背景介绍 简介 布隆过滤器的实现思路 布隆过滤器的作用 布隆过滤器误判率推导过程 布隆过滤器的实现 布隆过滤器的删除问题 布隆过滤器的优缺点 布隆过滤器的应用 背景介绍 在一些场景下面,有大量数据需要判断是否存在,而这些数据不是整…

物联网之MQTT

一,MQTT 及其在物联网中的应用 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,设计用于低带宽、延迟高、不稳定的网络环境,特别适合物联网(IoT)应用。它采用了发布/订…

案例 | 稳石机器人赋能日化企业内部物流提质增效

近年来,日化产业高速发展,以“清洁类”及“化妆品类”为主的日化品在人们生活中扮演着不可或缺的角色。然而在发展过程中,诸多难点也开始显头,招工难用工贵、生产速度受到掣肘等难题,都对日化企业可持续发展构成挑战。…

智慧安防EasyCVR视频监控汇聚管理平台云端录像时间轴拖动不跳转,是什么原因?

视频汇聚EasyCVR视频智能管理系统以其强大的拓展性、灵活的部署方式、高性能的视频能力和智能化的分析能力,为各行各业的视频监控需求提供了优秀的解决方案。EasyCVR平台支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、…

国产SaaS的挑战与未来:探索用户增长的新路径

在数字化转型的浪潮中,SaaS(软件即服务)行业扮演着至关重要的角色,为企业提供了灵活、高效的数字化解决方案。然而,国产SaaS行业在快速发展的同时,也面临着诸多挑战,包括客户定制化需求高、市场…

上门家政系统源码开发详解

引言 随着现代生活节奏的加快,越来越多的家庭选择聘请家政服务人员来解决日常生活中诸如清洁、烹饪等琐事。面对这一市场需求,开发一个高效的上门家政服务系统显得尤为重要。本文旨在探讨如何构建这样一个系统,并分享一些开发过程中需要注意的…

五、代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理对象通常会对真实对象的请求进行一些处理(例如延迟初始化、访问控制、日志记录等),它能够在不改变目标…