mysql 實現row_number() 分組排序功能

來源:互聯網
上載者:User

標籤:

資料庫基本指令碼

CREATE TABLE `a` (`ID` INT(10) NULL DEFAULT NULL,`class` INT(10) NULL DEFAULT NULL,`score` INT(10) NULL DEFAULT NULL)COLLATE=‘utf8_general_ci‘ENGINE=InnoDB;insert into a values (1,1,110);insert into a values (2,1,120);insert into a values (3,1,130);insert into a values (4,1,140);insert into a values (5,2,210);insert into a values (6,2,220);insert into a values (7,2,230);insert into a values (8,2,240);insert into a values (9,3,310);insert into a values (10,3,320);insert into a values (11,4,410);

 1. 對 class進行分組 取每組的前2條

select id,class,score,rank from (select b.id,b.class,b.score,@rownum:[email protected]+1 ,if(@pdept=b.class,@rank:[email protected]+1,@rank:=1) as rank,@pdept:=b.classfrom (select id,class,score from a order by id ) b ,(select @rownum :=0 , @pdept := null ,@rank:=0) c ) resulthaving rank <3 ;

 rank <3 指的相當月ruwnum<3 每組都自動給上了序號.多少條記錄就多少個序號.指的是每組的.

 

 2.  對 class 進行分組   取記錄滿足兩天的,也就是rownum=2 的資料

select id,class,score,rank from (select b.id,b.class,b.score,@rownum:[email protected]+1 ,if(@pdept=b.class,@rank:[email protected]+1,@rank:=1) as rank,@pdept:=b.classfrom (select id,class,score from a order by score desc ) b ,(select @rownum :=0 , @pdept := null ,@rank:=0) c ) resulthaving rank =2 ;

  

mysql 實現row_number() 分組排序功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.