<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    隨機抽取前N條記錄的問題(zhuant)

    [A]8i以上版本
    select * from (select * from tablename order by sys_guid()) where rownum < N;
    select * from (select * from tablename order by dbms_random.value) where rownum< N;
    注:dbms_random包需要手工安裝,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sql
    dbms_random.value(100,200)可以產生100到200范圍的隨機數

    [Q]抽取從N行到M行的記錄,如從20行到30行的記錄
    [A]select * from (select rownum id,t.* from table where ……  
    and rownum <= 30) where id > 20;


    [Q]怎么樣實現分組取前N條記錄
    [A]8i以上版本,利用分析函數
    如獲取每個部門薪水前三名的員工或每個班成績前三名的學生。
    Select * from  
    (select depno,ename,sal,row_number() over (partition by depno
         order by sal desc) rn  
    from emp)
        where rn<=3

    [Q]如何取得一列中第N大的值?
    [A]select * from  
    (select t.*,dense_rank() over (order by t2 desc) rank from t)  
    where rank = [$N]


    實例:


     1建立測試環境
     2create table 表(學生名稱 varchar(10),學生性別 varchar(10),年齡 int,所屬班級 varchar(10),分數 int)
     3insert 表 select '張三','',18,'三年一班',85
     4union all select '張四','',18,'三年一班',90
     5union all select '張五','',18,'三年一班',84
     6union all select '張六','',18,'三年一班',75
     7union all select '李三','',18,'三年二班',96
     8union all select '李四','',18,'三年二班',82
     9union all select '李五','',18,'三年二班',86
    10union all select '李六','',18,'三年二班',74
    11union all select '王一','',18,'四年一班',85
    12union all select '王二','',18,'四年一班',86
    13union all select '王三','',18,'四年一班',84
    14union all select '王四','',18,'四年一班',75
    15go
    16select * from 表
    17第一中方法
    18select * from 表 a
    19where 分數 in(
    20    select top 3 分數 from 表 where 所屬班級=a.所屬班級
    21    order by 分數 desc)
    22
    23

     1第二中方法
     2select * from 表 a
     3where 學生名稱 in(
     4    select top 3 學生名稱 from 表 where 所屬班級=a.所屬班級
     5    order by 分數 desc)
     6order by 所屬班級,分數 desc
     7
     8第三中方法
     9select
    10    a.*
    11from
    12    表 a
    13where
    14    a.學生名稱 in (select top 3 學生名稱 from 表 where 所屬班級=a.所屬班級 order by 分數 desc)
    15order by
    16    a.所屬班級,a.分數 desc 
    實例2:
     1create table 成績
     2(
     3id  int identity,
     4班級 varchar(20),
     5姓名 varchar(20),
     6分數 int
     7)
     8insert into 成績(班級,姓名,分數)values('1','aa',89)
     9insert into 成績(班級,姓名,分數)values('1','bb',45)
    10insert into 成績(班級,姓名,分數)values('1','cc',65)
    11insert into 成績(班級,姓名,分數)values('1','dd',67)
    12insert into 成績(班級,姓名,分數)values('1','ff',23)
    13insert into 成績(班級,姓名,分數)values('1','aeea',76)
    14insert into 成績(班級,姓名,分數)values('1','sfdsad',26)
    15
    16insert into 成績(班級,姓名,分數)values('2','afdsf',34)
    17insert into 成績(班級,姓名,分數)values('2','dsf',75)
    18insert into 成績(班級,姓名,分數)values('2','fdfdg',23)
    19insert into 成績(班級,姓名,分數)values('2','dfg',74)
    20insert into 成績(班級,姓名,分數)values('2','sdf',23)
    21insert into 成績(班級,姓名,分數)values('2','sdf',56)
    22insert into 成績(班級,姓名,分數)values('2','jhj',74)
    23
    24
    25select * from 成績 a where (select count(*from 成績 b where a.班級 = b.班級 and a.分數<= b.分數)<=3 order by 班級,分數 desc


    1/*實例四:語句中的30,31,40,58表示不同類型的數據,如:新聞,音樂,小說等類型,查詢語句的具體條件就是:
    從4個不同模塊中各取最新的前10條記錄(不夠10條則取全部數據)總共不超過40條記錄來隨機取4條,注意其中有可能4條都是同個類型,如果要限制每樣都要有一條,則可以對限制條件做處理即可
    */

    2
    3
    select id,module_id,title,msg,obj1,obj2,obj3,obj5,add_date from (
    4                select * from mxt_msginfo a  where (
    5                     select count(*from mxt_msginfo b  where  a.module_id = b.module_id and a.add_date<= b.add_date )<=10 and a.module_id in (30,31,40,58)   
    6                     order by dbms_random.value 
    7            )  where rownum<5  

    posted on 2007-12-04 21:30 都市淘沙者 閱讀(412) 評論(0)  編輯  收藏 所屬分類: Oracle/Mysql/Postgres/

    主站蜘蛛池模板: 美女扒开尿口给男人爽免费视频| 美女在线视频观看影院免费天天看| 国产成人精品久久亚洲| 国产色无码精品视频免费| 亚洲国产成a人v在线| 亚洲国产高清精品线久久| 18禁超污无遮挡无码免费网站| 亚洲乱码一二三四区麻豆| 亚洲日本一区二区一本一道| 91人人区免费区人人| 免费国产在线精品一区| 久久亚洲AV成人无码软件| 亚洲А∨精品天堂在线| AV大片在线无码永久免费| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲视频在线观看免费视频| 国产极品美女高潮抽搐免费网站| 久艹视频在线免费观看| 国产精品亚洲а∨无码播放麻豆| 亚洲视频在线观看一区| 亚洲国产小视频精品久久久三级| 114一级毛片免费| 人妻在线日韩免费视频| 国产成人高清亚洲一区91| 亚洲人成人77777网站不卡 | 亚洲国产一区在线观看| 久久被窝电影亚洲爽爽爽| xvideos亚洲永久网址| 我想看一级毛片免费的| 99re6免费视频| 99免费在线视频| 免费人成再在线观看网站| 亚洲熟伦熟女专区hd高清| 亚洲精品成人图区| 亚洲国产精品SSS在线观看AV| 亚洲 综合 国产 欧洲 丝袜| 在线观看免费a∨网站| 97在线观免费视频观看 | 在人线av无码免费高潮喷水| 亚洲一区免费观看| 中国极品美軳免费观看|