易截截图软件、单文件、免安装、纯绿色、仅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;
      


相关文档:

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

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

VB+SQL编写数据库管理系统

     参照案例教程建立的数据库管理系统在甚多方面都存在问题。可能是新手,不管是对于大一就学过的VB编程还是这个学期刚接触的SQL,很多小问题常常出现在调试过程中。想请熟悉使用这两个平台的高手帮忙指点一下。
     1.如何解决DataGrid中多个column和SQL中多个表的绑定?目的 ......

不重启SQL服务,删除SQLServer系统日志

    当SQLServer的系统日志过大,就会引起SQLServer服务器无法启动等一系列问题。今天我遇到了这个问题,在网上搜索了一下,解决方法是删除就可以了,可是当前的ErrorLog正在被SQL使用无法删除啊,要删除只能停止SQL服务器,难道就没有别得办法了吗?
    回答是肯定的:使用以下存储过程: ......

SQL 2005启用组件Ad Hoc Distributed Queries

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号