国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hive 排名函數(shù)ROW_NUMBER、RANK()、DENSE_RANK等功能介紹、對比和舉例

這篇具有很好參考價(jià)值的文章主要介紹了Hive 排名函數(shù)ROW_NUMBER、RANK()、DENSE_RANK等功能介紹、對比和舉例。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1. ROW_NUMBER()

2. RANK()

3. DENSE_RANK()

4. NTILE()

5. CUME_DIST()

6. PERCENT_RANK()


1. ROW_NUMBER()

? 功能:ROW_NUMBER() 函數(shù)為每個(gè)分組內(nèi)的行提供唯一的序列號,從1開始。如果在 OVER() 子句中使用 ORDER BY 語句,它將根據(jù)指定的列值對行進(jìn)行排序。

? 對比

? ?每個(gè)行都會獲得一個(gè)唯一的排名數(shù)字。
? ?即使兩行的排序列值相同,它們也會獲得連續(xù)的排名,不會有相同的排名值。

? 舉例:?

SELECT name, score, ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;

? 說明:假設(shè) students 表包含學(xué)生的名字和分?jǐn)?shù)。上述查詢將根據(jù)分?jǐn)?shù)降序排列學(xué)生,并為每個(gè)學(xué)生分配一個(gè)唯一的序列號作為排名。如果兩個(gè)學(xué)生分?jǐn)?shù)相同,他們將獲得連續(xù)的排名編號。

2. RANK()

? ? 功能:RANK() 函數(shù)在分組內(nèi)為行提供排名,從1開始。如果兩行或多行在 ORDER BY 子句中指定的排序列上的值相等,則它們將獲得相同的排名,并且排名數(shù)字會跳過。

? ? 對比

? ? 如果有相同值的行,它們將共享相同的排名。
? ? 在相同值的行之后的排名會跳過那些共享排名的行數(shù)。例如,如果有兩行共享排名1,那么下一個(gè)排名將是3。

? ??舉例:

SELECT name, score, RANK() OVER (ORDER BY score DESC) as rank
FROM students;

? ?說明:使用與 ROW_NUMBER() 相同的數(shù)據(jù),RANK() 函數(shù)將為分?jǐn)?shù)相同的學(xué)生分配相同的排名。如果兩個(gè)學(xué)生的分?jǐn)?shù)相同,他們將共享排名,例如都是排名1,下一個(gè)學(xué)生的排名將是3(假設(shè)只有兩個(gè)學(xué)生分?jǐn)?shù)相同)。

3. DENSE_RANK()

? ?功能:DENSE_RANK() 函數(shù)與 RANK() 函數(shù)類似,為分組內(nèi)的行提供排名,但是它不會跳過排名數(shù)字。

? ?對比:

? ? 與 RANK() 類似,相同值的行會獲得相同的排名。
? ? 不同于 RANK(),DENSE_RANK() 在相同值的行之后不會跳過排名數(shù)字。例如,如果有兩行共享排名1,那么下一個(gè)排名將是2。

? ?舉例:

SELECT name, score, DENSE_RANK() OVER (ORDER BY score DESC) as rank
FROM students;

? ?說明:使用與 RANK() 相同的數(shù)據(jù),DENSE_RANK() 函數(shù)也會為分?jǐn)?shù)相同的學(xué)生分配相同的排名。不同之處在于,它不會跳過排名,所以在上述例子中,下一個(gè)學(xué)生的排名將是2,而不是3。

4. NTILE()

? ?功能:NTILE() 函數(shù)將分組內(nèi)的行分配到指定數(shù)量的桶中,并為每個(gè)行提供桶的編號。這對于數(shù)據(jù)分區(qū)和分布式處理很有用。

? ?對比

? ? NTILE() 用于更均勻地分配行到固定數(shù)量的桶中,而不是基于其值的排名。
? ? 它更適合于當(dāng)你需要將數(shù)據(jù)均勻地分成幾部分時(shí)使用。

? ?舉例:

SELECT name, score, NTILE(4) OVER (ORDER BY score DESC) as bucket
FROM students;

? 說明:假設(shè)我們想要將學(xué)生根據(jù)分?jǐn)?shù)高低分成4個(gè)桶。NTILE(4) 將學(xué)生分成四個(gè)組,每個(gè)組有相近數(shù)量的學(xué)生,并為每個(gè)學(xué)生分配一個(gè)桶編號。

5. CUME_DIST()

? ? 功能CUME_DIST() 函數(shù)計(jì)算每個(gè)記錄的累計(jì)分布百分比。這個(gè)函數(shù)返回一個(gè)介于 0 和 1 之間的值,表示小于或等于當(dāng)前記錄值的所有記錄所占的比例。計(jì)算方式是 number of rows preceding or peer with the current row / total rows。

? ? 對比:

? ? 這是一個(gè)統(tǒng)計(jì)函數(shù),用于計(jì)算行在整體分布中的位置。
? ? 它不提供排名,而是提供了每行相對于整個(gè)數(shù)據(jù)集的位置度量。

? ??舉例:

SELECT name, score, CUME_DIST() OVER (ORDER BY score DESC) as cume_dist
FROM students;

? 說明:這將計(jì)算每個(gè)學(xué)生的累積分布值。在上述查詢中,每個(gè)學(xué)生的 cume_dist 值表示有多少比例的學(xué)生分?jǐn)?shù)低于或等于該學(xué)生。在這個(gè)例子中,每個(gè)學(xué)生的成績會根據(jù)分?jǐn)?shù)從高到低計(jì)算出一個(gè)累計(jì)分布百分比。例如,如果有 10 名學(xué)生,當(dāng)前學(xué)生是按成績排序后的第 3 名,那么前三名(包括當(dāng)前學(xué)生)的學(xué)生數(shù)占總學(xué)生數(shù)的比例即為當(dāng)前學(xué)生的累計(jì)分布百分比。如果前三名的成績相同,那么這三名學(xué)生的累計(jì)分布百分比相同,都是 0.3。

6. PERCENT_RANK()

? ? 功能PERCENT_RANK() 函數(shù)計(jì)算每個(gè)記錄在結(jié)果集中的相對排名百分比。這個(gè)函數(shù)會返回一個(gè)介于 0 和 1 之間的值,其中 0 表示排名最高(第一位),而 1 表示排名最低(最后一位)。計(jì)算方式是 (rank - 1) / (total rows - 1)。

? ?對比

? ? ?PERCENT_RANK() 提供了一個(gè)介于0和1之間的數(shù)值,這個(gè)數(shù)值表示當(dāng)前行的相對排名。
? ? 它用于確定行在其分組內(nèi)的相對位置,而不是一個(gè)絕對的排名數(shù)字。

? ??舉例:

SELECT name, score, PERCENT_RANK() OVER (ORDER BY score DESC) as percent_rank
FROM students;

? ?說明:在這個(gè)例子中,每個(gè)學(xué)生的成績會根據(jù)分?jǐn)?shù)從高到低計(jì)算出一個(gè)百分比排名。第一名的學(xué)生百分比排名是 0,最后一名的百分比排名是 1,其他學(xué)生的百分比排名介于兩者之間。文章來源地址http://www.zghlxwxcb.cn/news/detail-834147.html

到了這里,關(guān)于Hive 排名函數(shù)ROW_NUMBER、RANK()、DENSE_RANK等功能介紹、對比和舉例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Hive的Rank排名(rank函數(shù),dense_rank函數(shù),row_numer函數(shù))

    Hive的Rank排名(rank函數(shù),dense_rank函數(shù),row_numer函數(shù))

    一、區(qū)別: 三者通常都會配合窗口函數(shù)over(),并結(jié)合partition by order by xxx來分組排序,即形式使用:function_name over(partition by xxx order by xxx)。首先三者都是產(chǎn)生一個(gè)自增序列,不同的是 row_number( ) 排序的字段值相同時(shí)序列號不會重復(fù),如:1、2、(2)3、4、5(出現(xiàn)兩個(gè)2,第二個(gè)

    2023年04月17日
    瀏覽(24)
  • [hive] 窗口函數(shù) ROW_NUMBER()

    在 Hive SQL 中, ROW_NUMBER() 是一個(gè)用于生成行號的窗口函數(shù)。 它可以為 查詢結(jié)果集中的每一行分配一個(gè)唯一的行號 。 以下是 ROW_NUMBER() 函數(shù)的基本語法: PARTITION BY 子句可選,用于指定 分區(qū)列 ,它將結(jié)果集劃分為不同的分區(qū)。 每個(gè)分區(qū)內(nèi)的行都會有獨(dú)立的行號計(jì)數(shù),即行號

    2024年02月07日
    瀏覽(31)
  • hive limit分頁查詢、row_number()分頁查詢

    hive limit分頁查詢、row_number()分頁查詢

    ?? hive執(zhí)行l(wèi)imit語句報(bào)錯(cuò),分頁失敗 如: 2.1 row_number()的使用 ??(1)按照deptno分組,不排序 ??(2)按照empno進(jìn)行排序,不分組,排序列命名rownum ??(3)按照empno排序,同時(shí)根據(jù)deptno進(jìn)行分組 2.2 分頁 ??從原表中查詢第6到第10行數(shù)據(jù) 注: ??row_number最好寫一個(gè) 臨時(shí)

    2023年04月08日
    瀏覽(19)
  • mysql之row_number函數(shù)

    mysql之row_number函數(shù)

    1.語法 #將字段按照COLUMN1分組COLUMN2排序后分配一個(gè)從1開始升序的編號 PARTITION BY子句將結(jié)果集劃分為分區(qū)。 ROW_NUMBER()函數(shù)分別應(yīng)用于每個(gè)分區(qū),并重新初始化每個(gè)分區(qū)的行號。 PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數(shù)會將整個(gè)結(jié)果集視為單個(gè)分區(qū)。 ORDER BY子句定義

    2024年02月03日
    瀏覽(28)
  • SQL刪除重復(fù)的記錄(只保留一條)-窗口函數(shù)row_number()

    SQL刪除重復(fù)的記錄(只保留一條)-窗口函數(shù)row_number()

    關(guān)于刪除mysql表中重復(fù)數(shù)據(jù)問題,本文中給到兩種辦法:聚合函數(shù)、窗口函數(shù)row_number()的方法。 (注意:MySQL從8.0開始支持窗口函數(shù)) 測試數(shù)據(jù)準(zhǔn)備:首先創(chuàng)建一個(gè)測試表test,插入一些測試數(shù)據(jù),模擬一些重復(fù)數(shù)據(jù)(最終目標(biāo):刪除重復(fù)數(shù)據(jù),但不處理null行) 先查詢下重復(fù)數(shù)

    2024年02月05日
    瀏覽(30)
  • row_number 和 cte 使用實(shí)例:按照隊(duì)列進(jìn)行數(shù)據(jù)抵消

    row_number 和 cte 使用實(shí)例:按照隊(duì)列進(jìn)行數(shù)據(jù)抵消

    今天無聊的翻了翻以前的論壇的帖子。。。嗯,想把一些沒有什么價(jià)值的消息記錄給刪除掉,就是那些專家分獲取記錄。 畢竟,現(xiàn)在論壇已經(jīng)改名叫社區(qū)了,也取消了專家分這個(gè)設(shè)置了。 在進(jìn)行記錄刪除前,老顧覺得,有些比較有意思的問題,還是把記錄保留下來,比在所

    2024年02月16日
    瀏覽(24)
  • GaussDB(DWS)遷移實(shí)踐丨row_number輸出結(jié)果不一致

    摘要: 遷移前后結(jié)果集row_number字段值前后不一致,前在DWS上運(yùn)行不一致。 本文分享自華為云社區(qū)《GaussDB(DWS)遷移 - oracle兼容 --row_number輸出結(jié)果不一致》,作者:譡里個(gè)檔 。 遷移前后結(jié)果集row_number字段值前后不一致,前在DWS上運(yùn)行不一致。 這種問題大部分都是因?yàn)镻ARTITI

    2024年02月06日
    瀏覽(27)
  • MySQL 實(shí)現(xiàn)row_number() over(partition by ) 分組排序功能

    語法格式: ? row_number() over()分組排序功能: 在使用 row_number() over()函數(shù)時(shí)候,over()里頭的分組以及排序的執(zhí)行晚于 where 、group by,但不晚于 order by 的執(zhí)行。 ? 創(chuàng)建測試環(huán)境 在線數(shù)據(jù)庫 http://sqlfiddle.com/ ? 1. 創(chuàng)建表 ? 2. Oracle row_number() over(partition by) 分組排序功能 ? 3. M

    2024年02月15日
    瀏覽(21)
  • mysql8之前如何實(shí)現(xiàn)row_number() over(partition by xxx order by xxx asc/desc)

    mysql8之前如何實(shí)現(xiàn)row_number() over(partition by xxx order by xxx asc/desc)

    最近筆者在進(jìn)行對廣告業(yè)務(wù)的數(shù)據(jù)統(tǒng)計(jì)時(shí)遇到這種情況,業(yè)務(wù)方嫌棄離線數(shù)倉太慢,又無需太高的實(shí)時(shí)性本該使用即席查詢的OLAP去做,但是當(dāng)前公司調(diào)研的OLAP還沒有推到廣告業(yè)務(wù)側(cè),無奈只得使用mysql暫時(shí)頂一下。我們當(dāng)前使用的是mysql5.7。 一充用戶 :當(dāng)日只有一次充值的

    2024年02月05日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包