项目中需要分组取某个值最近的前2条数据
比如表
a(id,name,num)
数据
1 a 1
2 a 1
3 a 3
4 b 1
5 b 6
6 b 5
7 b 7
需求 :已知参数 id 为2,6
查询出相同name,最接近num的前2个的数据
结果:
1 a 1
2 a 1
4 b 1
6 b 5
------------
思路
1、排序并加入分组行号(列a)
2、加入当前id分组行号(列b)
3、根据分组行号比较
模拟过程
1、结果
1 a 1 1
2 a 1 2
3 a 3 3
4 b 1 1
6 b 5 2
5 b 6 3
7 b 7 4
2、结果 (id=2的行号是2,id=6的行号也是2)
1 a 1 1 2
2 a 1 2 2
3 a 3 3 2
4 b 1 1 2
6 b 5 2 2
5 b 6 3 2
7 b 7 4 2
3、通过列a和列b
条件 列a<=列b and 列a>=列b-2
结果出来:
1 a 1
2 a 1
4 b 1
6 b 5
分享到:
相关推荐
打个比方你要查询每月排名前十的那些记录,或者每月销售前十的车辆。
#### 从数据表中取指定前几条记录 为了获取表中的前几条记录,可以使用`LIMIT`子句(在某些版本的DB2中)。例如:`SELECT * FROM table_name LIMIT 10;` 这将返回表中的前10行。 #### 游标的使用 **游标**是用于...
模式是数据库中的逻辑分组,用于组织和控制数据对象的访问权限。DB2支持多种方式来控制模式的使用。 ##### 2.9 表(Table) 表是关系型数据库中最基本的数据存储单元,由行和列组成。每个表都必须有一个主键来唯一...
本书为用户提供了一个全面的指南,介绍了如何使用DB2中的SQL语句来进行数据操作。书中不仅包含了基本概念和示例,还提供了详细的语法说明和技术细节。 #### 2. 如何阅读语法图示 文档中包含了大量的语法图示来帮助...
- **插入数据**:向Employees表中添加几条员工记录。 - **查询数据**:使用SELECT语句检索数据,并结合WHERE子句进行条件筛选。 - **更新数据**:更改某个员工的薪水。 - **删除数据**:从Employees表中移除某个员工...
5. 分组查询:GROUP BY子句将数据分组,HAVING子句筛选满足条件的分组。 例如,`SELECT WORKDEPT, JOB FROM EMPLOYEE` 查询员工表EMPLOYEE中的部门和职位信息,`SELECT * FROM EMPLOYEE WHERE SALARY > 5000` 则...
10. COUNT 函数:查看表中有几条数据。 11. LIMIT 语句:限制查询结果的输出数量,同时也可以实现数据的分页查询。 12. 约束: * 非空约束 (NOT NULL):定义了表级的强制规则,数据的完整性。 * 唯一约束 ...
在进行数据库操作时,有几个原则需要遵循以提高性能:尽可能减少满足条件的数据条目数量,减少数据传输量以降低网络流量,减少访问数据库表的量,并且减少查询难度,可以通过整理选择标准来实现;同时,要减少数据库...
根据给定文件的信息,我们可以梳理出以下几个主要的知识点: ### 1. 约束条件的概念及分类 #### 概念: 约束条件是用于确保存储在表中的数据满足一定的规则,从而保持数据的一致性和准确性。这些规则可以是定义...
关系型数据库管理系统(RDBMS, Relational Database Management System)是当前应用最为广泛的一种数据库类型,其中包含了诸如Oracle、DB2(IBM)、Sybase等大型数据库系统,以及SQL Server(Microsoft)、MySQL...
3 协议支持 支持主流数据库: Oracle、SQLServer、Mysql、DB2 infomix、Sybase、CACH、 达梦、人大金仓、神舟 Oscar、南大通用 GBASE数据仓库teradata。 支持主流业务协议: TeInet、SMTP POP3 DCOM 4 审计内容 ...
IBM DB2作为一款广泛使用的数据库管理系统,提供了丰富的功能来支持各种数据管理和处理需求。本篇文章将基于一份关于“SQL入门”的PDF资料进行深入解析,旨在为初学者提供一个全面了解如何使用SQL与DB2交互的基础。 ...
17、说明:随机取出10条数据 select top 10 * from tablename order by newid() 18、说明:随机选择记录 select newid() 19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from ...
17、说明:随机取出10条数据 select top 10 * from tablename order by newid() 18、说明:随机选择记录 select newid() 19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from ...
17、说明:随机取出10条数据 select top 10 * from tablename order by newid() 18、说明:随机选择记录 select newid() 19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from ...