當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  數(shù)據(jù)庫(kù) >  正文

SQL Server中row_number函數(shù)的常見(jiàn)用法示例詳解

 2020-10-19 10:29  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

這篇文章主要給大家介紹了關(guān)于SQL Server中row_number函數(shù)的常見(jiàn)用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一.SQL Server Row_number函數(shù)簡(jiǎn)介

ROW_NUMBER()是一個(gè)Window函數(shù),它為結(jié)果集的分區(qū)中的每一行分配一個(gè)連續(xù)的整數(shù)。 行號(hào)以每個(gè)分區(qū)中第一行的行號(hào)開(kāi)頭。

以下是ROW_NUMBER()函數(shù)的語(yǔ)法實(shí)例:

select *,row_number() over(partition by column1 order by column2) as n from tablename

在上面語(yǔ)法中:

PARTITION BY子句將結(jié)果集劃分為分區(qū)。 ROW_NUMBER()函數(shù)分別應(yīng)用于每個(gè)分區(qū),并重新初始化每個(gè)分區(qū)的行號(hào)。

PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數(shù)會(huì)將整個(gè)結(jié)果集視為單個(gè)分區(qū)。

ORDER BY子句定義結(jié)果集的每個(gè)分區(qū)中的行的邏輯順序。 ORDER BY子句是必需的,因?yàn)镽OW_NUMBER()函數(shù)對(duì)順序敏感。

二.Row_number函數(shù)的具體用法

1.使用row_number()函數(shù)對(duì)結(jié)果集進(jìn)行編號(hào),如:

select ROW_NUMBER() over(order by recordid ) as 編號(hào),* from [dbo].[Basal_Anormal_Solution]

運(yùn)行結(jié)果:

2.對(duì)結(jié)果集按照指定列進(jìn)行分組,并在組內(nèi)按照指定列排序(如:把班級(jí)的總分按照小組進(jìn)行分組顯示,分組后在組內(nèi)進(jìn)行從高分到低分的排序)

select *,row_number() over(partition by createby order by actionOpeid) as n from [dbo].[Basal_Anormal_Solution]

運(yùn)行結(jié)果:

3.對(duì)結(jié)果集按照指定列去重(如:對(duì)學(xué)生成績(jī)按小組進(jìn)行分組顯示,結(jié)果集中只顯示每組中一位最高分的學(xué)生)

select a.* from (select *,row_number() over(partition by createby order by actionOpeid)
as n from [dbo].[Basal_Anormal_Solution])as a where a.n<2

運(yùn)行結(jié)果:

注意: 當(dāng)我們求的是第一名成績(jī)的時(shí)候,不能用row_number(),因?yàn)槿绻嘤袃蓚€(gè)并列第一,row_number()只返回一個(gè)結(jié)果。這個(gè)時(shí)候就要用到另外一個(gè)函數(shù),rank()和dense_rank();rank()和dense_rank()區(qū)別:rank()是跳躍排序,有兩個(gè)第二名時(shí)接下來(lái)就是第四名。這個(gè)時(shí)候我們通常會(huì)選擇用rank()函數(shù),靈活應(yīng)用。

總結(jié)

到此這篇關(guān)于SQL Server中row_number函數(shù)常見(jiàn)用法的文章就介紹到這了,更多相關(guān)SQL Server row_number函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

來(lái)源:腳本之家

鏈接:https://www.jb51.net/article/196634.htm

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
用法

相關(guān)文章

  • 詳解SQL游標(biāo)的用法

    這篇文章主要介紹了SQL游標(biāo)的用法,文中講解非常詳細(xì),配合代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下

    標(biāo)簽:
    用法
  • sql server數(shù)據(jù)庫(kù)中raiserror函數(shù)用法的詳細(xì)介紹

    這篇文章主要介紹了sqlserver數(shù)據(jù)庫(kù)中raiserror函數(shù)用法的詳細(xì)介紹,raiserror用于拋出一個(gè)異?;蝈e(cuò)誤,讓這個(gè)錯(cuò)誤可以被程序捕捉到。對(duì)此感興趣的可以了解一下

    標(biāo)簽:
    sqlserver
    用法
  • PHP常量DIRECTORY_SEPARATOR原理及用法解析

    這篇文章主要介紹了PHP常量DIRECTORY_SEPARATOR原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

    標(biāo)簽:
    php教程
    用法
  • SQLServer中row_number分頁(yè)查詢的用法詳解

    這篇文章主要介紹了SQLServer中row_number的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

    標(biāo)簽:
    sqlserver
    用法
  • VUE中watch用法

    監(jiān)測(cè)Vue實(shí)例變化的一個(gè)表達(dá)式或方法?;卣{(diào)函數(shù)得到的參數(shù)為新值和舊值,用一個(gè)函數(shù)取代。簡(jiǎn)潔的說(shuō):watch的作用可以監(jiān)控一個(gè)值的變換,并調(diào)用因?yàn)樽兓枰獔?zhí)行的方法??梢酝ㄟ^(guò)watch動(dòng)態(tài)改變關(guān)聯(lián)的狀態(tài)。

    標(biāo)簽:
    用法

熱門(mén)排行

信息推薦