DB2查询获取排序号

简介:   相信大家都会有这样的需求,即对一张表进行排序查询的同时获取排序号。那么在使用mysql数据库时,我们通常通过变量来实现,或者客户端代码里进行fetch +1操作。   而在DB2数据库里,直接提供了获取行号的SQL语法,一条简单的SQL语句就能实现这个需求。

  相信大家都会有这样的需求,即对一张表进行排序查询的同时获取排序号。那么在使用mysql数据库时,我们通常通过变量来实现,或者客户端代码里进行fetch循环 +1操作。
  而在DB2数据库里,直接提供了获取行号的SQL语法,一条简单的SQL语句就能实现这个需求。

接下来的测试用例如下:

create table sorttest(name varchar(20),course varchar(20),score int);

insert into sorttest values('张三','语文',80);
insert into sorttest values('张三','数学',70);
insert into sorttest values('张三','英语',90);

insert into sorttest values('李四','语文',67);
insert into sorttest values('李四','数学',75);
insert into sorttest values('李四','英语',85);

当前测试表数据如下,
table

简单排序

  首先实现一个简单的需求,即对所有的分数从高到底进行排序,并显示每行数据的行号。

可使用如下SQL语句进行查询:

select NAME, COURSE, SCORE, ROW_NUMBER() OVER (ORDER BY SCORE DESC) SORTNO 
        from  sorttest;

返回结果如下,
image

从上面的返回结果看到,查询的结果集里包含数据的行号。

呃,这个简单的SQL确实能够实现排序时获取排序号的需求,不过这么排序好像意义并不是很明显。

分区排序

  分区即分组的意思,分区排序支持按照分组字段为单位生成相对隔离的排序号。来看下面的例子。
  同样是这张表,另外一个需求可能要显得有意义一些。我们把每个同学的成绩按照分数进行单独排序,并且按照分数从高到低进行编号。

这里我们使用分区排序的语法来实现,如下,

select NAME, COURSE, SCORE, ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY SCORE DESC) SORTNO 
        from  sorttest;

获取的结果集如下,
image

  从结果集中我们看到,排序号是按照每个同学为单位进行单独编号的,这个看似苛刻需求在这里只是通过一个简单的SQL语句就实现了。

  对于排序编号这点上,DB2支持的还是比较强大的,SQL语法使用也很方便,“小特性,大用处”,不可小视。

目录
相关文章
|
7月前
|
SQL 缓存 数据库
毕设答辩现场翻车合集:15个让人社死的突发状况及自救指南
计算机毕设答辩翻车多因技术卡点、演示故障、论文格式问题。本文结合500+真实案例,拆解15个高频社死场景+可落地自救方案,并分享如何用效率工具提前规避风险,助力开发者从"天级开发"缩短至"小时级",稳拿答辩通关
|
8月前
|
JSON 自然语言处理 供应链
跨境电商ERP如何对接索恩WMS海外仓系统
索恩WMS是专为跨境电商海外仓打造的智能仓储系统,支持多平台订单同步、实时库存管理、智能拣货与全球物流对接,覆盖入库、出库、库存、财务等全链路API,助力企业降本增效、提升履约体验。(239字)
582 3
|
10月前
|
人工智能 监控 调度
AI 调度官 vs AI 指挥官:边界与误区对照表
AI调度官是多智能体系统的运行中枢,专注执行编排、资源调度与状态监控,不参与目标决策或业务判断。其核心价值在于保障系统稳定、高效、可解释、可扩展,是组织级智能协同的基础设施型角色。
414 7
|
存储 弹性计算 数据挖掘
阿里云4核8G云服务器价格多少钱?2024年阿里云4核8G云服务器价格及性能测评参考
2024年,阿里云针对4核8G配置的云服务器提供了多种实例规格,包括经济型e实例、通用算力型u1、计算型c7等。这些不同实例规格的服务器在性能参数和费用上都有所不同,以满足不同用户的需求。其中,通用算力型u1实例的4核8G云服务器在价格上表现出色。新用户专享活动价仅需955.58元一年,折合每月仅需80元。这一价格相较于同类产品来说,性价比极高。同时,该服务器配备了高性能的ESSD云盘,能够确保用户在存储操作系统、应用程序和数据时获得最佳体验。
994 0
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能股票交易策略
使用Python实现智能股票交易策略
838 0
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
418 2
|
测试技术 数据安全/隐私保护 索引
基于SpringBoot+Vue大学生体质测试管理系统【源码+论文+演示视频+包运行成功】(2)
基于SpringBoot+Vue大学生体质测试管理系统【源码+论文+演示视频+包运行成功】
395 0
|
算法
NYOJ-448-寻找最大数
NYOJ-448-寻找最大数
257 0
|
网络安全 开发工具 数据安全/隐私保护
GitHub不再支持密码验证解决方案:SSH免密与Token登录配置
今天提交代码,push到GitHub上,突然出现这个问题。 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to acce
|
C语言 Perl
博途软件的基本操作,快捷操作有哪些?什么是博途视图和项目视图?
博途软件开发之初就把直观、高效、可靠作为非常重要的关键因素,持续走访了世界多数国家的工程师并着眼未来,博途软件在界面设置、窗口规划布局等多方面进行优化布置。如何快速了解博途软件的界面、操作规则是提高效率的关键环节。本节我们主要来介绍博途软件的基本操作。
博途软件的基本操作,快捷操作有哪些?什么是博途视图和项目视图?

热门文章

最新文章