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

目录

需求

范例运行环境

视图样本设计

功能实现

基础数据展示

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] 设计如下:

序号

字段名

类型

说明

备注

1

zwmc

nvarchar

职位名称

应聘的岗位名称,以此进行分区排序

2

xm

nvarchar

姓名

3

kscj1

float

考试成绩1

计算总成绩的一个分项

4

kscj2

float

考试成绩2

计算总成绩的一个分项

5

kszcj

float

考试总成绩

计算排名的依据

功能实现

基础数据展示

选择数据视图 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.mzph.cn/news/1125554.shtml

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

相关文章

Thinkphp和Laravel框架的电信学院年终高校考核材料归档平台研究与设计_80664x25

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 针对电信学院年终高校考核材料归档需求,研究基于ThinkPHP和Laravel框架的归档平台设计与实现。平台采用B/S架构,整合材料提交、审核、分类存储及统计分析功能&…

Java进阶-在Ubuntu上部署SpringBoot应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言,具有广泛的应用场景。本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,包括环境准备、应用发布、配置反向代理&#…

Spring Boot Admin与Kubernetes集成监控

摘要 本文深入探讨Spring Boot Admin与Kubernetes的集成监控方案,包括容器化部署、服务发现、资源监控等关键技术点。通过详细的技术解析和实践示例,帮助开发者构建基于Kubernetes的微服务监控体系。 1. 引言 Kubernetes作为容器编排的标准,与…

【Unity】实现Quad瓦片(MeshRenderer)渲染图集图片

使用Mesh Renderer渲染图集图片,并保证图片不变形效果(采用GPU Instancing优化合批)创建一个Quad物体,材质Shader如下,将图集图片通过SpriteAtlas加载出来得到Sprite对象进行后面的传参操作即可进行渲染出图集图片。Te…

【课程设计/毕业设计】基于python-CNN深度学习的水果识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序

MSSQL2022导入Excel的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序 一、导入情况二、问题发现三、问题解决 最近在安装新版SQLServer SSMS 2022后,每次导入Excel都会出现错误提示:未在本地计算机上注册“Microsoft.…

Thinkphp和Laravel框架的茶叶购物网上商城系统 潇湘知茶小程序_dyo5sig5

目录ThinkPHP与Laravel框架的茶叶商城系统对比分析项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理ThinkPHP与Laravel框架的茶叶商城系统对比分析 ThinkPHP框架实现特点 ThinkPHP作为国产轻量级框架,适合快速开发中小型茶叶商城。其内…

【状态估计】基于LQR控制和卡尔曼滤波算法实现二维四旋翼的状态估计(噪声传感器数据)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

【毕业设计】基于深度学习python-CNN的水果识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026免费好用的AIPPT工具榜:智能演示文稿制作新纪元

引言 随着人工智能技术的飞速发展,传统演示文稿的制作流程正经历一场深刻的变革。过去,制作一份专业的PPT往往意味着数小时乃至数天的内容构思、手动排版与视觉设计。如今,AI生成PPT工具的出现,正将这一过程简化为几分钟的智能交…

Thinkphp和Laravel框架的蛋糕甜品烘焙教程微信小程序设计与实现_6uy1k94r

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 Thinkphp和Laravel框架的蛋糕甜品烘焙教程微信小程序设计与实现,结合了PHP后端框架与微信小程序前端技术,为用户提供便捷的烘焙学习平台。该小程序以蛋糕甜品烘…

计算机深度学习毕设实战-卷神经网络基于深度学习的土豆疾病识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】机器学习 基于python-cnn深度学习的罗马数据集训练识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Knife4j文档请求异常(基于SpringBoot3,查找原因并解决)

博主采用的是SpringBoot3knife4j的框架,如果你采用的是SpringBoot2框架,那么可以看下面这几篇: Knife4j文档请求异常 | Knife4j 记一次集成swagger2(Knife4j)在线文档异常,提示:Knude4j文档请…

从执行到管理:SOP思维,是你必须掌握的职场杠杆

我成为管理者后的最大收获,是发现了一个职场真相:高效团队不是靠超人,而是靠可复制的方法。 曾经带过一名非常优秀的员工小陈,她解决问题总是一针见血,工作效率是别人的两倍。当她提出离职时,我焦虑了整整一周——很多关键任务只有她最清楚。也正是这次危机,让我彻底明…

Kafka 基础概念

Kafka 基础概念 Kafka 是什么? 分布式流处理平台,专为高吞吐量、低延迟的实时数据流设计。核心功能包括发布-订阅消息系统、持久化存储和流式处理。 核心组件 Topic:消息的逻辑分类,类似数据库表。Partition:Topic 的物…

【毕业设计】机器学习基于python深度学习的苹果和西红柿识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

knife4j+springboot3.4异常无法正确展示文档

场景复现: knife4j-openapi3-jakarta-spring-boot-starter版本 com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter 4.5.0 原来使用springboot3.3.5版本,先升级到3.4.0版本 通过http://ip:port/doc.html访问接口文档发现访问/v3/api-d…

深度学习计算机毕设之基于深度学习的土豆疾病识别卷神经网络

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果

安装依赖 pip install --upgrade --quiet langchain-core langchain-community langchain-openai编写代码 from langchain_core.prompts import ChatPromptTemplate from langchain_community.utilities import SQLDatabase from langchain_core.output_parsers import StrOut…