sql查询最大的见多了,查询第二的呢???
问题:
数据库中人表有三个属性,用户(编号,姓名,身高),查询出该身高排名第二的高度。
建表语句
create table users
(
id int identity(1,1) primary key,
name varchar(20),
height float
);
数据库表:用户表(Users)
|
数据库字段 |
字段意义 |
数据类型 |
约束 |
备注 |
|
id |
编号 |
int |
主键 |
自增长 |
|
name |
姓名 |
VARCHAR(20) |
||
|
height |
身高 |
float |
测试数据
insert into users(name,height) values('zhangsan',182);
insert into users(name,height) values('李四',122);
insert into users(name,height) values('张强',132);
insert into users(name,height) values('王明',122);
insert into users(name,height) values('姜明',182);
insert into users(name,height) values('蒋克龙',182);
insert into users(name,height) values('zhang',182);
insert into users(name,height) values('安安',181);
insert into users(name,height) values('健健',181);
insert into users(name,height) values('明明',181);
insert into users(name,height) values('小小',177);
insert into users(name,height) values('旺旺',123);
insert into users(name,height) values('卡纳',175);
insert into users(name,height) values('文鑫',166);
insert into users(name,height) values('健明',155);
insert into users(name,height) values('拉拉',152);
insert into users(name,height) values('青青',132);
insert into users(name,height) values('乐乐',155);
insert into users(name,height) values('KK',123);
insert into users(name,height) values('FF',122);
insert into users(name,height) values('Lily',152);
查询语句
1、查询出没有重复值的第二名,即假如最高的身高是182,有几个人同时身高是182,则查出身高小于182的的最高的身高值。
1>、方式1:
select MAX(height) from users where height < (select MAX(height) from users );
意义:先查询出最高的身高值,然后查询身高小于该值的最高身高。
2>、方式2:
select top 1 height from users where height not in (select MAX(height) from users) order by height desc;
意义:先查询出最高的身高,排除该身高,然后将数据进行排序(降序),查询出当前的第一条数据。
3>、方式3:使用RANK()函数
rank函数考虑到了over子句中排序字段值相同的情况,值相同的时候RANK函数的到的值相等。
select top 1 height from (
select *,RANK() OVER (ORDER BY height desc) AS Rank from users
) t where rank<>1
意义:给每一个记录一个行号,使用RANK函数,去掉身高值最高的记录(重复值的rank函数获得值相同)。
2、查询出可能与最高身高值相同的第二名,即假如身高最高是182,有几个人同时是182身高,第二名依然是182.
1>、方式1:
select top 1 * from (select top 2 height from users order by height desc) s order by height asc;
意义:将数据按照身高(降序)排列,查询出前面的两项,然后将这两项按照身高升序,查询第一项目。
2>、方式2:row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号(不考虑重复值)。
select top 1 height from (
select *,ROW_NUMBER() OVER (ORDER BY height desc) AS Rank from users
) t where rank<>1
意义:给每一个记录一个行号ROW_NUMBER使用函数,去掉身高值最高的记录(重复值的ROW_NUMBER函数获得值不同)。
致谢:感谢您的耐心阅读!假如有更好的答案希望不吝赐教。
sql查询最大的见多了,查询第二的呢???的更多相关文章
- SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法
本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...
- 【MySQL】SQL优化系列之 in与range 查询
首先我们来说下in()这种方式的查询 在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的. ...
- 淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成物理查询计划
SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理运行计划. 前两个步骤请參见我的博客<<淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树>& ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- 读书笔记--SQL必知必会14--组合查询
14.1 组合查询 复合查询(compound query)或并(union),SQL允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回. 应用场景: 在一个查询中从不同的表返回 ...
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- SQL总结(二)连表查询
---恢复内容开始--- SQL总结(二)连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union ...
- 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句
如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...
- 关于SQL查询效率,100w数据,查询只要1秒
1.关于SQL查询效率,100w数据,查询只要1秒,与您分享:机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试,比 ...
- SQL查询显示行号、随机查询、取指定行数据
转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...
随机推荐
- SQL Server 行转列重温
转载自http://www.cnblogs.com/kerrycode/ 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER ...
- 使用 HTML5 Canvas 绘制出惊艳的水滴效果
HTML5 在不久前正式成为推荐标准,标志着全新的 Web 时代已经来临.在众多 HTML5 特性中,Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作 ...
- CSS3盒模型温故
CSS有一种基础设计模式叫盒模型,定义了Web页面中的元素是如何看做盒子来解析的.每一个盒子有不同的展示界面,下面就来介绍盒模型,主要有一下几种盒模型:inline.inline-block.bloc ...
- Apache 配置屏蔽某些请求头
Apache配置文件代码.xwamp:Windows下搭建Apache + PHP + MySQL环境 <Location /> SetEnvIfNoCase User-Agent &qu ...
- go语言最新版本 下载地址
国内官方网站无法打开.放在了百度云中,定期会更新: 链接:http://pan.baidu.com/s/1dD59duh 密码:46ek 备用地址:http://pan.baidu.com/s/1hq ...
- PyInstaller编译python3时使用的详细参数介绍
继续翻译中.... The syntax of the pyinstaller command is: pyinstaller [options] script [script ...] | spec ...
- 深入理解:JavaScript原型与继承
深入理解:JavaScript原型与继承 看过不少书籍,不少文章,对于原型与继承的说明基本上让人不明觉厉,特别是对于习惯了面向对象编程的人来说更难理解,这里我就给大家说说我的理解. 首先JavaScr ...
- Excel数据导入到Sharepoint List
这个功能是从XML中读取需要导入到Sharepoint List的列名字,然后把Excel中对应的数据导入到Sharepoint List中.基本原理,把Excel中数据临时放到Datatable中, ...
- 转 #ifndef/#define/#endif使用详解
想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件 ...
- 【C语言】C语言外部变量和内部变量
目录: [外部变量] · 定义 · 用extern修饰变量 [内部变量] · 定义 · 用static修饰变量 1.外部变量 · 定义 定义的变量能被本文件和其它文件访问的变量,称为外部变量. 注: ...