欢迎来到天天文库
浏览记录
ID:34739687
大小:47.84 KB
页数:4页
时间:2019-03-10
《使用sql语句找到表中某列的第几名》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQL>select*fromt1;IDAGE--------------------1202193194215226276rowsselected.现在要求找出表中第三年轻的学生方法1第三年轻,也就意味着只有两个人比他小SQL>selectt11.*2fromt1t113where2=(selectcount(*)fromt1t22wheret11.age>t22.age);IDAGE--------------------120方法2使用窗口函数SQL>selectid,age2from3(4selectid,age,5dense_
2、rank()over(orderbyage)dr6fromt17)8wheredr=3;IDAGE--------------------421奇怪了,这里结果为什么不一样呢?回头看一下表中的数据,有两条age=19的数据,这就是原因。下面换rankSQL>selectid,age2from3(4selectid,age,5rank()over(orderbyage)dr6fromt17)8wheredr=3;IDAGE--------------------120通过如下两个查询可以看出来DENSE_RANK和RANK的区别SQL>s
3、electid,age,2rank()over(orderbyage)dr3fromt1;IDAGEDR------------------------------3191219112034214522562766rowsselected.SQL>selectid,age,2dense_rank()over(orderbyage)dr3fromt1;IDAGEDR------------------------------3191219112024213522462756rowsselected.方法3使用自连接SQL>selectt1
4、1.*2fromt1t11,t1t22,t1t333wheret11.age>t22.age4andt22.age>t33.age5andt11.idnotin6(7selectt44.id8fromt1t44,t1t55,t1t66,t1t779wheret44.age>t55.age10andt55.age>t66.age11andt66.age>t77.age12);IDAGE--------------------421421啊哦,又出错了,这里还是同样的原因,由于表中存在重复数据。这个改起来有些麻烦,我们就先把表中的那条重复数
5、据取掉吧,毕竟这里真正的目的是这个SQL写法的思路SQL>deletefromt1whereid=2;1rowdeleted.SQL>select*fromt1orderbyage;IDAGE--------------------319120421522627SQL>selectt11.*2fromt1t11,t1t22,t1t333wheret11.age>t22.age4andt22.age>t33.age5andt11.idnotin6(7selectt44.id8fromt1t44,t1t55,t1t66,t1t779wher
6、et44.age>t55.age10andt55.age>t66.age11andt66.age>t77.age12);IDAGE--------------------421
此文档下载收益归作者所有