<bdo id="vljxk"><rt id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt><rt id="vljxk"></rt><noframes id="vljxk"><rt id="vljxk"><delect id="vljxk"></delect></rt><noframes id="vljxk"><rt id="vljxk"></rt><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt>

當前位置:首頁 >  站長 >  數據庫 >  正文

SQL Server中row_number函數的常見用法示例詳解

 2020-10-19 10:29  來源: 腳本之家   我來投稿 撤稿糾錯

  阿里云優惠券 先領券再下單

這篇文章主要給大家介紹了關于SQL Server中row_number函數的常見用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一.SQL Server Row_number函數簡介

ROW_NUMBER()是一個Window函數,它為結果集的分區中的每一行分配一個連續的整數。 行號以每個分區中第一行的行號開頭。

以下是ROW_NUMBER()函數的語法實例:

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

在上面語法中:

PARTITION BY子句將結果集劃分為分區。 ROW_NUMBER()函數分別應用于每個分區,并重新初始化每個分區的行號。

PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數會將整個結果集視為單個分區。

ORDER BY子句定義結果集的每個分區中的行的邏輯順序。 ORDER BY子句是必需的,因為ROW_NUMBER()函數對順序敏感。

二.Row_number函數的具體用法

1.使用row_number()函數對結果集進行編號,如:

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

運行結果:

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

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

運行結果:

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

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

運行結果:

注意: 當我們求的是第一名成績的時候,不能用row_number(),因為如果同班有兩個并列第一,row_number()只返回一個結果。這個時候就要用到另外一個函數,rank()和dense_rank();rank()和dense_rank()區別:rank()是跳躍排序,有兩個第二名時接下來就是第四名。這個時候我們通常會選擇用rank()函數,靈活應用。

總結

到此這篇關于SQL Server中row_number函數常見用法的文章就介紹到這了,更多相關SQL Server row_number函數用法內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

來源:腳本之家

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

申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!

相關標簽
用法

相關文章

  • 詳解SQL游標的用法

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

    標簽:
    用法
  • sql server數據庫中raiserror函數用法的詳細介紹

    這篇文章主要介紹了sqlserver數據庫中raiserror函數用法的詳細介紹,raiserror用于拋出一個異?;蝈e誤,讓這個錯誤可以被程序捕捉到。對此感興趣的可以了解一下

    標簽:
    sqlserver
    用法
  • PHP常量DIRECTORY_SEPARATOR原理及用法解析

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

    標簽:
    php教程
    用法
  • SQLServer中row_number分頁查詢的用法詳解

    這篇文章主要介紹了SQLServer中row_number的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    sqlserver
    用法
  • VUE中watch用法

    監測Vue實例變化的一個表達式或方法?;卣{函數得到的參數為新值和舊值,用一個函數取代。簡潔的說:watch的作用可以監控一個值的變換,并調用因為變化需要執行的方法??梢酝ㄟ^watch動態改變關聯的狀態。

    標簽:
    用法

熱門排行

信息推薦