易截截图软件、单文件、免安装、纯绿色、仅160KB

使用SQL语句找到表中某列的第几名

SQL> select * from t1;
        ID        AGE
---------- ----------
         1         20
         2         19
         3         19
         4         21
         5         22
         6         27
6 rows selected.
现在要求找出表中第三年轻的学生
方法1
第三年轻,也就意味着只有两个人比他小
SQL> select t11.*
  2  from t1 t11
  3  where 2=(select count(*) from t1 t22 where t11.age>t22.age);
        ID        AGE
---------- ----------
         1         20
方法2
使用窗口函数
SQL> select id,age
  2  from
  3  (
  4  select id,age,
  5  dense_rank() over(order by age) dr
  6  from t1
  7  )
  8  where dr=3;
        ID        AGE
---------- ----------
         4         21
奇怪了,这里结果为什么不一样呢?回头看一下表中的数据,有两条age=19的数据,这就是原因。下面换rank
SQL> select id,age
  2  from
  3  (
  4  select id,age,
  5  rank() over(order by age) dr
  6  from t1
  7  )
  8  where dr=3;
      


相关文档:

sql 2005 存储过程分页 java 代码

 create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',         
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列 ......

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

SQL语句优化方法

我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。

(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):

Oracle的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在f ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号