最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sqlserver巧用row_number和partition by分組取top數(shù)據(jù)

 更新時間:2011年12月20日 11:55:07   作者:  
SQL Server 2005后之后,引入了row_number()函數(shù),row_number()函數(shù)的分組排序功能使這種操作變得非常簡單
分組取TOP數(shù)據(jù)是T-SQL中的常用查詢, 如學生信息管理系統(tǒng)中取出每個學科前3名的學生。這種查詢在SQL Server 2005之前,寫起來很繁瑣,需要用到臨時表關(guān)聯(lián)查詢才能取到。SQL Server 2005后之后,引入了row_number()函數(shù),row_number()函數(shù)的分組排序功能使這種操作變得非常簡單。下面是一個簡單示例:
復(fù)制代碼 代碼如下:

--1.創(chuàng)建測試表
create table #score
(
name varchar(20),
subject varchar(20),
score int
)
--2.插入測試數(shù)據(jù)
insert into #score(name,subject,score) values('張三','語文',98)
insert into #score(name,subject,score) values('張三','數(shù)學',80)
insert into #score(name,subject,score) values('張三','英語',90)
insert into #score(name,subject,score) values('李四','語文',88)
insert into #score(name,subject,score) values('李四','數(shù)學',86)
insert into #score(name,subject,score) values('李四','英語',88)
insert into #score(name,subject,score) values('李明','語文',60)
insert into #score(name,subject,score) values('李明','數(shù)學',86)
insert into #score(name,subject,score) values('李明','英語',88)
insert into #score(name,subject,score) values('林風','語文',74)
insert into #score(name,subject,score) values('林風','數(shù)學',99)
insert into #score(name,subject,score) values('林風','英語',59)
insert into #score(name,subject,score) values('嚴明','英語',96)
--3.取每個學科的前3名數(shù)據(jù)
select * from
(
select subject,name,score,ROW_NUMBER() over(PARTITION by subject order by score desc) as num from #score
) T where T.num <= 3 order by subject
--4.刪除臨時表
truncate table #score
drop table #score

語法形式:ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)
解釋:根據(jù)COL1分組,在分組內(nèi)部根據(jù) COL2排序,而此函數(shù)計算的值就表示每組內(nèi)部排序后的順序編號(組內(nèi)連續(xù)的唯一的)

相關(guān)文章

最新評論

乐山市| 马山县| 曲靖市| 邓州市| 临西县| 视频| 荣成市| 怀柔区| 福泉市| 林西县| 逊克县| 杨浦区| 保康县| 新沂市| 乌兰浩特市| 株洲市| 德江县| 巴东县| 泰安市| 神池县| 青川县| 景德镇市| 平邑县| 湾仔区| 武穴市| 探索| 苗栗县| 石柱| 新田县| 正定县| 库车县| 平顶山市| 抚宁县| 淮滨县| 凤冈县| 和硕县| 莒南县| 营山县| 伊吾县| 玉林市| 手游|