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

數(shù)據(jù)庫rank()分組排序函數(shù)的具體使用

 更新時間:2024年11月18日 11:33:53   作者:五月天的尾巴  
RANK()是MySQL數(shù)據(jù)庫中的一個窗口函數(shù),它可以根據(jù)指定的排序列對數(shù)據(jù)進行排序,并為相同的值分配相同的排名,文中通過示例代碼介紹的非常詳細,感興趣的可以了解一下

RANK()是MySQL數(shù)據(jù)庫提供的一個窗口函數(shù),用于對查詢結(jié)果進行排序并為每個行分配排名。它可以根據(jù)指定的排序列對數(shù)據(jù)進行排序,并返回唯一的排名值。

mysql、oracle、hive都支持rank()函數(shù)

一、rank()函數(shù)

RANK(): 用于對結(jié)果集中的行進行排名。RANK() 會為相同的值分配相同的排名,并在隨后排名中跳過相應(yīng)的名次。 例如有兩個并列第一,則前兩名的排名都是1,第三個人的排名是3。

語法結(jié)構(gòu):

RANK() OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 

PARTITION BY子句對結(jié)果集進行分區(qū)。RANK()功能在分區(qū)內(nèi)執(zhí)行;ORDER BY子句按一個或多個列或表達式對分區(qū)內(nèi)的行進行排序。

注意,over()里頭的分組以及排序的執(zhí)行晚于 where 、group by、 order by 的執(zhí)行。

二、使用案例

數(shù)據(jù)準(zhǔn)備:

create table `student`(
    id int(10) not null primary key,
    name varchar(20) not null,
    score int(10) not null
);

insert into `student` values(1,'a',100);
insert into `student` values(2,'b',100);
insert into `student` values(3,'c',95);
insert into `student` values(4,'d',95);
insert into `student` values(5,'e',95);
insert into `student` values(6,'a',90);
insert into `student` values(7,'a',89);

表數(shù)據(jù):

在這里插入圖片描述

2.1、按成績進行排名

select *,rank() over(order by score desc) as `rank` from `student`;

兩個并列第一名后,下一個是第三名。

在這里插入圖片描述

上圖中over中沒有使用partition進行分組,默認都是同一組

2.2、獲取排名前五的數(shù)據(jù)

select * from (
  select name, score, rank() over (order by score desc) as `rank`
  from `student`
) a  where `rank` <=5;

在這里插入圖片描述

2.3、分組后再排名

select name,score,rank() over(partition by name order by score desc) as `rank`
from `student`;

首先,PARTITION BY子句按姓名將結(jié)果集分成多個分區(qū)。

然后,ORDER BY子句按分?jǐn)?shù)對結(jié)果集進行排序。

在這里插入圖片描述

三、總結(jié)

在數(shù)據(jù)分析中,ROW_NUMBER()、RANK() 和 DENSE_RANK() 是非常有用的工具。它們可以幫助用戶快速對數(shù)據(jù)進行排名和分類分析。雖然這三種函數(shù)的作用相似,但因其在處理重復(fù)值時的行為不同,所以在使用時需要根據(jù)具體需求進行選擇。

3.1、row_number()、rank() 和 dense_rank() 的區(qū)別

  • ROW_NUMBER():為每一行分配唯一的行號,適合唯一標(biāo)識需求。
  • RANK():為重復(fù)值分配相同的排名,并在后續(xù)排名中跳過名次,適合需要處理排名的場景。
  • DENSE_RANK():為重復(fù)值分配相同的排名,但不跳過名次,適合希望連續(xù)排名的場景。

下面表格總結(jié)了這三個函數(shù)的主要區(qū)別:

函數(shù)特點排名示例
ROW_NUMBER為每行分配唯一的數(shù)字1, 2, 3, 4, …
RANK相同的值共享相同的排名,排名會跳過數(shù)字1, 1, 3, 4, …
DENSE_RANK相同的值共享相同的排名,不跳過數(shù)字1, 1, 2, 3, …

具體請參考《row_number() over (partition by 分組列 order by 排序列 desc)、row_number() 函數(shù)、分組排序函數(shù)》、《dense_rank() 函數(shù)的使用》、《row_number()、rank() 和 dense_rank() 的區(qū)別、分組排序函數(shù)

到此這篇關(guān)于數(shù)據(jù)庫rank()分組排序函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫rank()分組排序函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Navicat導(dǎo)入和導(dǎo)出sql語句的圖文教程

    使用Navicat導(dǎo)入和導(dǎo)出sql語句的圖文教程

    Navicat是MySQL非常好用的可視化管理工具,功能非常強大,能滿足我們?nèi)粘?shù)據(jù)庫開發(fā)的所有需求,下面這篇文章主要給大家介紹了關(guān)于使用Navicat導(dǎo)入和導(dǎo)出sql語句的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 在PostgreSQL中使用日期類型時一些需要注意的地方

    在PostgreSQL中使用日期類型時一些需要注意的地方

    這篇文章主要介紹了在PostgreSQL中使用日期類型時一些需要注意的地方,包括時間戳和日期轉(zhuǎn)換等方面,需要的朋友可以參考下
    2015-04-04
  • SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫

    SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫

    這篇文章主要為大家詳細介紹了SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 利用reverse索引優(yōu)化like語句的方法詳解

    利用reverse索引優(yōu)化like語句的方法詳解

    這篇文章主要介紹了關(guān)于利用reverse索引優(yōu)化like語句的方法,文中通過圖文介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 如何用分表存儲來提高性能 推薦

    如何用分表存儲來提高性能 推薦

    如何用分表存儲來提高性能 ,需要的朋友可以參考下。
    2011-09-09
  • 一篇文章帶你了解數(shù)據(jù)庫中JOIN的用法

    一篇文章帶你了解數(shù)據(jù)庫中JOIN的用法

    這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫中JOIN的用法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用數(shù)據(jù)庫具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SQLite快速入門指南

    SQLite快速入門指南

    這篇文章主要介紹了SQLite快速入門指南,作為開源的嵌入式數(shù)據(jù)庫,SQLite可以在不需要過多投入數(shù)據(jù)庫開發(fā)時提供十分輕便的服務(wù),需要的朋友可以參考下
    2015-07-07
  • CentOS 7.9部署openGauss數(shù)據(jù)庫的實戰(zhàn)指南

    CentOS 7.9部署openGauss數(shù)據(jù)庫的實戰(zhàn)指南

    openGauss作為企業(yè)級開源關(guān)系型數(shù)據(jù)庫,既具備OLTP/OLAP混合負載的能力,也在向量計算、AI檢索等新場景上持續(xù)演進,下面我們就來看看如何在CentOS 7.9上部署openGauss數(shù)據(jù)庫吧
    2025-11-11
  • update 子查詢使用介紹

    update 子查詢使用介紹

    這篇文章主要介紹了update 子查詢使用介紹,需要的朋友可以參考下
    2014-08-08
  • 如何利用分析函數(shù)改寫范圍判斷自關(guān)聯(lián)查詢詳解

    如何利用分析函數(shù)改寫范圍判斷自關(guān)聯(lián)查詢詳解

    這篇文章主要給大家介紹了關(guān)于如何利用分析函數(shù)改寫范圍判斷自關(guān)聯(lián)查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用sql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論

韩城市| 纳雍县| 西峡县| 永新县| 红桥区| 东城区| 亳州市| 长泰县| 钟祥市| 天峨县| 延庆县| 花莲县| 石泉县| 阿坝| 勐海县| 仁布县| 清苑县| 宾川县| 高要市| 卓资县| 陕西省| 遂昌县| 大城县| 苗栗市| 当涂县| 囊谦县| 宁都县| 盐津县| 广德县| 岳池县| 额尔古纳市| 永平县| 宜昌市| 称多县| 黑龙江省| 栾城县| 堆龙德庆县| 石河子市| 九江县| 旺苍县| 榆社县|