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

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

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

    Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統(tǒng)計

    留言簿(23)

    積分與排名

    優(yōu)秀學(xué)習(xí)網(wǎng)站

    友情連接

    閱讀排行榜

    評論排行榜

    隨機(jī)抽取前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)可以產(chǎn)生100到200范圍的隨機(jī)數(shù)

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


    [Q]怎么樣實現(xiàn)分組取前N條記錄
    [A]8i以上版本,利用分析函數(shù)
    如獲取每個部門薪水前三名的員工或每個班成績前三名的學(xué)生。
    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建立測試環(huán)境
     2create table 表(學(xué)生名稱 varchar(10),學(xué)生性別 varchar(10),年齡 int,所屬班級 varchar(10),分?jǐn)?shù) 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 分?jǐn)?shù) in(
    20    select top 3 分?jǐn)?shù) from 表 where 所屬班級=a.所屬班級
    21    order by 分?jǐn)?shù) desc)
    22
    23

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


    1/*實例四:語句中的30,31,40,58表示不同類型的數(shù)據(jù),如:新聞,音樂,小說等類型,查詢語句的具體條件就是:
    從4個不同模塊中各取最新的前10條記錄(不夠10條則取全部數(shù)據(jù))總共不超過40條記錄來隨機(jī)取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/

    主站蜘蛛池模板: 久久久久久影院久久久久免费精品国产小说| 99热亚洲色精品国产88| 国产精品亚洲五月天高清| 精品久久久久成人码免费动漫 | 免费萌白酱国产一区二区| 亚洲欧美国产国产一区二区三区| 在线观看的免费网站| 国产亚洲精品成人AA片| 在线观看免费国产视频| 国产成人综合久久精品亚洲| 亚洲精品国产电影| 最近中文字幕免费大全| 亚洲AV无码久久| 精品国产污污免费网站aⅴ| 亚洲性无码AV中文字幕| 伊人久久亚洲综合影院| 国产又黄又爽又大的免费视频| 亚洲AV日韩AV天堂一区二区三区| 久久国产精品成人片免费| 亚洲sss综合天堂久久久| 国产中文字幕免费观看| 中文字幕乱理片免费完整的| 亚洲蜜芽在线精品一区| 国产成人3p视频免费观看| 成人无码视频97免费| 亚洲视频在线免费看| 永久黄网站色视频免费| 国产精品hd免费观看| 亚洲视频免费一区| 免费观看午夜在线欧差毛片| 国内精品免费在线观看| 亚洲色丰满少妇高潮18p| 国产亚洲av人片在线观看| 四虎在线视频免费观看视频| 老司机午夜免费视频| 亚洲综合在线视频| 免费很黄很色裸乳在线观看| 久久国产免费观看精品3| 狠狠热精品免费观看| 亚洲成a人片在线观看播放| 亚洲成av人片在线观看天堂无码 |