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

常見的四種排名函數(shù)的用法(sql)

這篇具有很好參考價值的文章主要介紹了常見的四種排名函數(shù)的用法(sql)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

四個排名函數(shù):
1.row_number
2.rank
3.dense_rank
4.ntile

1. ROW_NUMBER(排名場景推薦)
1.1 介紹

在 SQL 中,ROW_NUMBER() 是一個窗口函數(shù),它為結(jié)果集中的每一行分配一個唯一的序號。該函數(shù)的語法如下:

ROW_NUMBER() OVER (ORDER BY column1 [, column2, ...])

其中,ORDER BY 子句指定了 ROW_NUMBER() 函數(shù)排列行的順序。如果省略 ORDER BY,則序號將按照結(jié)果集中的任意順序進(jìn)行分配。

1.2 使用場景及例子

1.2.1 排名
通過order by進(jìn)行排序得到排名。

SELECT
	id,
	name,
	score,
	row_number() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常見的四種排名函數(shù)的用法(sql)

1.2.2 去重
可以使用 ROW_NUMBER() 函數(shù)去除重復(fù)記錄。例如,在一個表中,有重復(fù)記錄,想要保留每個記錄的唯一編號。

SELECT id, column1, column2, ...
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY id) AS row_num
    FROM table_name
) subquery
WHERE row_num = 1;

1.2.3 分頁查詢
大可不必,不建議使用。

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY id) AS row_num
    FROM table_name
) subquery
WHERE row_num BETWEEN 11 AND 20;
2. RANK
2.1 介紹

在SQL中,RANK()是一個窗口函數(shù),用于根據(jù)指定的ORDER BY子句給結(jié)果集中的每一行分配排名值。在排序過程中,如果有多個行具有相同的排序值,則它們將被分配相同的排名值。RANK()可以在SELECT語句的SELECT子句、ORDER BY子句或OVER()子句中使用。

以下是RANK()的語法:

RANK() OVER ( [PARTITION BY partition_expression, ... [n]]
ORDER BY sort_expression [ASC|DESC], ... [n] )

在這個語法中,PARTITION BY子句可選,它用于將結(jié)果集分割成不同的分區(qū),然后對每個分區(qū)的行進(jìn)行排名。如果省略PARTITION BY,則所有行將合并成一個分區(qū),然后進(jìn)行排名。
排序表達(dá)式是必需的,可以指定一個或多個表達(dá)式以排序行。SORT_EXPRESSION可以是列名稱、函數(shù)、常量或表達(dá)式。

2.2 使用場景及例子

2.2.1 排名
通過order by進(jìn)行排序得到排名。

SELECT
	id,
	name,
	score,
	RANK() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常見的四種排名函數(shù)的用法(sql)
2.2.2 分組排名

SELECT
	id,
	name,
	score,
	RANK() OVER(PARTITION BY name
	ORDER BY score DESC) AS ranks
FROM
	student_info

常見的四種排名函數(shù)的用法(sql)
PARTITION BY子句指定了name列作為分區(qū)表達(dá)式,ORDER BY子句按score列降序排序。

但使用RANK排名有個問題,即字段內(nèi)容相同時,會得到相同名次,并且后續(xù)會跳過幾個名次,如圖:
常見的四種排名函數(shù)的用法(sql)

3. DENSE_RANK
3.1 介紹

DENSE_RANK()是SQL中的一個窗口函數(shù)(window function),用于查詢結(jié)果中的排名。與RANK()類似,不同之處在于DENSE_RANK()不會出現(xiàn)相同的排名。即使有多個值排名相同,緊隨其后的排名也會按照定義進(jìn)行遞增。解決RANK的問題。

3.2 使用場景及例子

3.2.1 排名
通過order by進(jìn)行排序得到排名。

SELECT
	id,
	name,
	score,
	DENSE_RANK() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常見的四種排名函數(shù)的用法(sql)

4. NTILE
4.1 介紹

NTILE函數(shù)用于將一組數(shù)據(jù)按照數(shù)量均勻地分成若干份,并給每份數(shù)據(jù)編號。常見的用途是將數(shù)據(jù)進(jìn)行分組或劃分。
語法:

NTILE(n) OVER (ORDER BY expr)

其中n:指定將數(shù)據(jù)分成的份數(shù)。ORDER BY expr:指定按照哪個表達(dá)式來進(jìn)行排序。

4.2 使用場景及例子

4.2.1 排名
通過order by進(jìn)行排序得到排名。

SELECT
	id,
	name,
	score,
	NTILE(4) OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常見的四種排名函數(shù)的用法(sql)文章來源地址http://www.zghlxwxcb.cn/news/detail-427455.html

到了這里,關(guān)于常見的四種排名函數(shù)的用法(sql)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • mysql數(shù)據(jù)庫limit的四種用法

    mysql數(shù)據(jù)庫limit的四種用法

    mysql數(shù)據(jù)庫中l(wèi)imit子句可以被用于強(qiáng)制select語句返回指定的記錄數(shù)。limit接受一個或兩個數(shù)字參數(shù)。參數(shù)必須是一個整數(shù)常量。如果給定兩個參數(shù),第一個參數(shù)指定第一個返回記錄行的偏移量,第二個參數(shù)指定返回記錄行的最大數(shù)目;若果給定一個參數(shù),則表示回記錄行的最大

    2024年02月08日
    瀏覽(30)
  • CTF中常見的四種python逆向

    CTF中常見的四種python逆向

    說在前面: 什么是pyc文件? pyc是一種二進(jìn)制文件,是由py文件經(jīng)過編譯后,生成的文件,是一種byte code,py文件變成pyc文件后,加載的速度有所提高, pyc ?文件是 Python 編譯過的字節(jié)碼文件。它是 Python 程序在運行過程中由源代碼(通常是 .py 文件)自動或手動編譯產(chǎn)生的二進(jìn)

    2024年04月22日
    瀏覽(13)
  • script標(biāo)簽4種的四種用法,你知道幾種?

    script標(biāo)簽4種的四種用法,你知道幾種?

    本文為HTML標(biāo)準(zhǔn)解讀系列文章,其他文章詳見這里。 在一個HTML頁面中執(zhí)行js腳本有很多方式,包括但不限于以下幾種: 使用script標(biāo)簽執(zhí)行腳本; 使用 javascript:URL 的導(dǎo)航; 使用DOM上的事件監(jiān)聽機(jī)制; 使用svg相關(guān)技術(shù)中的腳本能力; 在這些方式中,使用最多的無疑是第一種。

    2024年02月05日
    瀏覽(16)
  • 密碼學(xué)---常見的四種密碼攻擊方式

    密碼學(xué)---常見的四種密碼攻擊方式

    已知部分密文和加密算法,依次采用所有的密鑰進(jìn)行試譯。 1、截獲的部分密文 2、加密算法 由于掌握的資源少,一般采用窮舉攻擊。 經(jīng)不起唯密文攻擊的密碼一般認(rèn)為是不安全的。 攻擊者能從已知的明文被變換成密文的方式中獲得密鑰 1、截獲的部分密文 2、加密算法 3、已

    2024年02月07日
    瀏覽(26)
  • 磊科路由器常見故障的四種解決方法

    ? 一、線路不通 1、在確保路由器電源正常的前提下首先查看寬帶接入端,路由器上的指示燈可以說明寬帶線路接入端是否正常,觀察其燈閃亮狀態(tài),連續(xù)閃爍為正常,不亮或長亮不閃爍為故障,我們可以換一根寬帶膠線代替原來的線路進(jìn)行連接。 2、如果是無線路由器,查看

    2024年02月05日
    瀏覽(18)
  • cv::Mat的四種復(fù)制操作和cv::Mat作為函數(shù)形參的四種形式

    cv::Mat的四種復(fù)制操作和cv::Mat作為函數(shù)形參的四種形式

    1、通過講解cv::Mat類的深拷貝和淺拷貝來說明cv::Mat的四種復(fù)制操作 2、當(dāng)cv::Mat作為函數(shù)形參時: cv::Mat temp 、 const cv::Mat temp 、 cv::Mat temp 、 const cv::Mat temp 這四種形參有什么區(qū)別?函數(shù)內(nèi)部對Mat類形參數(shù)據(jù)的改變是否會影響到外面的Mat類實參數(shù)據(jù)? OpenCV2,數(shù)據(jù)結(jié)構(gòu)Mat主要包含

    2024年02月10日
    瀏覽(21)
  • Java 項目防止 SQL 注入的四種方案

    SQL注入即是指web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒有判斷或過濾不嚴(yán),攻擊者可以在web應(yīng)用程序中事先定義好的查詢語句的結(jié)尾上添加額外的SQL語句,在管理員不知情的情況下實現(xiàn)非法操作,以此來實現(xiàn)欺騙數(shù)據(jù)庫服務(wù)器執(zhí)行非授權(quán)的任意查詢,從而進(jìn)一步得到相應(yīng)的數(shù)據(jù)

    2024年02月09日
    瀏覽(26)
  • STM32延時函數(shù)的四種方法

    STM32延時函數(shù)的四種方法

    STM32延時函數(shù)的四種方法 單片機(jī)編程過程中經(jīng)常用到延時函數(shù),最常用的莫過于微秒級延時delay_us()和毫秒級delay_ms()。本文基于STM32F207介紹4種不同方式實現(xiàn)的延時函數(shù)。 \\\\插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門單片機(jī)教程,想要的同學(xué)找我私信,最近比較

    2023年04月26日
    瀏覽(21)
  • C語言實例,輸出Hello,World的四種函數(shù)。

    在C語言中,輸出“Hello, World”是學(xué)習(xí)的第一個例子。它可以幫助程序員了解如何在屏幕上打印文本。下面是幾種輸出“Hello, World”的方式: 使用printf()函數(shù)可以將指定的文本輸出到標(biāo)準(zhǔn)輸出流stdout。下面是使用printf()函數(shù)輸出“Hello, World”的例子: 在這個例子中,我們包含了

    2024年02月09日
    瀏覽(18)
  • 解決VS中scanf()函數(shù)報錯問題的四種方案(詳細(xì))

    解決VS中scanf()函數(shù)報錯問題的四種方案(詳細(xì))

    ?scanf函數(shù)在VS中報錯的主要原因是 scanf被認(rèn)為不安全而被編譯器默認(rèn)設(shè)置為禁用。 那么如何解決這個問題呢 法一: 僅將函數(shù) scanf 替換為 scanf_s 即可,其他語法不變。但scanf_s函數(shù)并不是C語言函數(shù)庫里的標(biāo)準(zhǔn)函數(shù),而是VS編譯器所提供的函數(shù),所以并不推薦用這種方法來解決

    2024年02月02日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包