CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

请教一条SQL语句

楼主myhotsun(科科)2005-01-04 13:39:13 在 Oracle / 开发 提问

表结构如下name     modeDate;  
  现在需要查找name为‘A’,‘B',‘C'的各自最新的5条记录。 问题点数:50、回复次数:12Top

1 楼judyhui7612()回复于 2005-01-04 13:50:04 得分 20

select   name,modedate   from   (select   name,modedate   from   table    
  where   (name='a')    
  order   by   modedate   desc)    
  where   rownum<6  
  union  
  select   name,modedate   from   (select   name,modedate   from   table    
  where   (name='b')    
  order   by   modedate   desc)    
  where   rownum<6  
  union  
  select   name,modedate   from   (select   name,modedate   from   table    
  where   (name='c')    
  order   by   modedate   desc)    
  where   rownum<6  
   
  期待更好的方法Top

2 楼zrb007(老兵)回复于 2005-01-04 15:08:10 得分 10

刚学到的处理这种问题的最好办法:  
  select   a.学生name,a.课程name,a.成绩   from  
  (select   学生name,课程name,成绩,row_number()  
    over(partition   by   课程name   order   by   成绩   desc)   top3   from   你的表)   a  
  where   a.top3   <=   3  
  楼主的问题照改就是了!  
  Top

3 楼judyhui7612()回复于 2005-01-04 16:07:03 得分 10

zrb007(彬彬)   挺好的  
  Top

4 楼GerryYang(轻尘)回复于 2005-01-04 17:06:08 得分 10

表结构如下name     modeDate;  
  现在需要查找name为‘A’,‘B',‘C'的各自最新的5条记录。  
   
  select   a.*   from    
  (select   a.*,row_number(partition   by   name,order   by   modedate)   rn   from   a)   a  
  where   a.name   in   ('A','B','C')   and   a.rn<=5;  
  没有测试过,自己调试一下.Top

5 楼liuyi8903(不让疑问伴随)回复于 2005-01-04 17:10:22 得分 0

Select   *  
      From   (Select   Tablename.*,  
                                Row_Number()   Over(Partition   By   Name   Order   By   Modedate)   Rk  
                      From   Tablename)  
    Where   Rk   <=   5Top

6 楼soniczck(城市农作物)回复于 2005-01-08 19:02:39 得分 0

SELECT   *  
      FROM   (SELECT   a.*,  
                                Row_Number()   Over(PARTITION   BY   a.NAME   ORDER   BY   a.Modedate)   Rn  
                      FROM   Tablename   a)  
    WHERE   Rn   <=   5  
        AND   NAME   IN   ('A',   'B',   'C')Top

7 楼soniczck(城市农作物)回复于 2005-01-08 19:10:22 得分 0

分析函数语法:  
   
  FUNCTION_NAME(<argument>,<argument>..)  
  OVER  
  (<Partition-clause>,<Order-by-Clause><Windowing   Clause>)  
   
  注:  
  argument有0~3个参数,可以是表达式  
  OVER   区分是聚集函数还是分析函数  
  Partition-clause   可选的分区子句,如果没有则将结果集视为一个单一的大区。分析函数主要就是作用于分区结果。  
  Order-by-Clause   可选,针对分组内的排序Top

8 楼iyvewzhb(浪人)回复于 2005-01-13 11:13:05 得分 0

学习Top

9 楼yxxx(_小孬)回复于 2005-01-13 11:20:57 得分 0

学习Top

10 楼scorpionyjg()回复于 2005-01-13 11:24:57 得分 0

up!Top

11 楼NinGoo(http://www.NinGoo.net)回复于 2005-01-13 11:25:17 得分 0

row_number()真的很不错,听说sql   server2005也引入了,期待~~Top

12 楼blueyyou(blueyyou)回复于 2005-01-13 14:23:02 得分 0

top3是什么意思?Top

相关问题

  • 一条sql语句
  • 一条sql语句
  • 一条sql语句!
  • 一条SQL语句
  • 一条sql语句
  • 一条sql语句
  • 一条sql语句
  • 一条SQL 语句
  • 一条sql语句
  • 一条sql语句

关键词

  • modedate
  • where
  • select

得分解答快速导航

  • 帖主:myhotsun
  • judyhui7612
  • zrb007
  • judyhui7612
  • GerryYang

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo