中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQLServer中的row_number函數怎么使用

發布時間:2023-03-02 13:51:25 來源:億速云 閱讀:205 作者:iii 欄目:MySQL數據庫

本文小編為大家詳細介紹“SQLServer中的row_number函數怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“SQLServer中的row_number函數怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    一、SQL Server Row_number函數簡介

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

    語法實例:

    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()函數對結果集進行編號

    示例:

    對test_user表的查詢結果標記行號,并新增 “編號”列返回

    -- 使用 ROW_NUMBER()函數對結果進行編號
    select ROW_NUMBER() over(order by id) as 編號,* 
    from test_user;

    運行結果:

    SQLServer中的row_number函數怎么使用

    可以看到,查詢結果新增了一列,專門用來標記行號。

    有了編號,我們就可以方便地進行分頁查詢了。

    2.對結果集按照指定列進行分組,并在組內按照指定列排序

    示例:

    把test_user表的name按照小組進行分組顯示,分組后在組內進行從低到高id排序

    -- 使用partition by對結果集進行分組
    select *,row_number() over(partition by name order by id) as n 
    from  test_user;

    運行結果:

    SQLServer中的row_number函數怎么使用

    3.對結果集按照指定列去重

    示例:

    對 test_user表按name進行分組顯示,結果集中只顯示每組中一條 id最小的數據

    select a.* from (
    	select *,row_number() over(partition by name order by id) as row_id from test_user
    	) as a 
    -- 只查詢組內編號為1的數據
    where a.row_id<2;

    運行結果:

    SQLServer中的row_number函數怎么使用

    查詢結果先是經過name分組,然后組內進行id升序排序,組內編號為1的第1條數據,自然就是id最小的數據。

    注意:

    當我們按成績分數查詢名次等需求時,不能用row_number(),因為如果同班有兩個并列第一,row_number()只返回一個結果。這個時候就要用到另外一個函數,rank()和dense_rank()。

    rank()和dense_rank()區別:

    1、RANK()
    在計算排序時,若存在相同位次,會跳過之后的位次。
    例如,有3條排在第1位時,排序為:1,1,1,4&middot;&middot;&middot;&middot;&middot;&middot;
    2、DENSE_RANK()
    這就是題目中所用到的函數,在計算排序時,若存在相同位次,不會跳過之后的位次。
    例如,有3條排在第1位時,排序為:1,1,1,2&middot;&middot;&middot;&middot;&middot;&middot;

    讀到這里,這篇“SQLServer中的row_number函數怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    南平市| 象州县| 叙永县| 金寨县| 十堰市| 永吉县| 教育| 黔西县| 莆田市| 石嘴山市| 开江县| 清新县| 西乌珠穆沁旗| 香河县| 泾阳县| 阿尔山市| 禄丰县| 乐清市| 溆浦县| 阿图什市| 濮阳县| 封开县| 大竹县| 富宁县| 阳高县| 额敏县| 东乡族自治县| 阿拉善盟| 高淳县| 花莲县| 称多县| 汨罗市| 湘潭市| 闸北区| 漾濞| 高尔夫| 边坝县| 霍邱县| 龙陵县| 寻乌县| 甘泉县|