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

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

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

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

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

一、rank()函數(shù)

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

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

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

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

注意,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、按成績進(jìn)行排名

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

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

在這里插入圖片描述

上圖中over中沒有使用partition進(jìn)行分組,默認(rèn)都是同一組

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é)果集進(jìn)行排序。

在這里插入圖片描述

三、總結(jié)

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

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非常好用的可視化管理工具,功能非常強(qiáng)大,能滿足我們?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ù)庫

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

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

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫中JOIN的用法,文中通過示例代碼介紹的非常詳細(xì),對大家學(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混合負(fù)載的能力,也在向量計算、AI檢索等新場景上持續(xù)演進(jìn),下面我們就來看看如何在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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用sql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論

长丰县| 河东区| 潮安县| 宁国市| 武义县| 永新县| 顺昌县| 柞水县| 武强县| 崇阳县| 永兴县| 铜陵市| 航空| 偏关县| 邯郸市| 昌江| 公安县| 华宁县| 阳曲县| 涞源县| 昌乐县| 天峻县| 丹棱县| 永宁县| 苗栗县| 和平县| 施甸县| 甘谷县| 屯昌县| 灵山县| 资源县| 广宗县| 民勤县| 兴化市| 河东区| 郧西县| 二连浩特市| 深州市| 柳州市| 岫岩| 喜德县|