mysql數(shù)據(jù)庫(kù)row_number函數(shù)舉例介紹
1.語(yǔ)法
#將字段按照COLUMN1分組COLUMN2排序后分配一個(gè)從1開(kāi)始升序的編號(hào)
SELECT *, ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2 ) AS NUM FROM TABLE;
- PARTITION BY子句將結(jié)果集劃分為分區(qū)。 ROW_NUMBER()函數(shù)分別應(yīng)用于每個(gè)分區(qū),并重新初始化每個(gè)分區(qū)的行號(hào)。
- PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數(shù)會(huì)將整個(gè)結(jié)果集視為單個(gè)分區(qū)。
- ORDER BY子句定義結(jié)果集的每個(gè)分區(qū)中的行的邏輯順序。ORDER BY子句是必須的,因?yàn)镽OW_NUMBER()函數(shù)對(duì)順序敏感
2.舉例
1.將商品表中的價(jià)格按升序排序并編號(hào)
SELECT goods_price,goods_user_id,ROW_NUMBER() over(ORDER BY goods_price) as num FROM goods
運(yùn)行結(jié)果:
結(jié)果新增了一列來(lái)標(biāo)記行號(hào)
2.將商品按用戶(hù)分組后價(jià)格降序并編號(hào)
SELECT goods_price,goods_user_id,ROW_NUMBER() over(PARTITION BY goods_user_id ORDER BY goods_price desc) as num FROM goods
運(yùn)行結(jié)果:
結(jié)果會(huì)按每一個(gè)用戶(hù)進(jìn)行分區(qū),按價(jià)格降序排序后,按順序編號(hào)。
3.將商品按用戶(hù)分組后價(jià)格降序并編號(hào)且只查詢(xún)編號(hào)為1的記錄
SELECT * FROM (SELECT goods_price,goods_user_id,ROW_NUMBER() over(PARTITION By goods_user_id ORDER BY goods_price desc) as num FROM goods) as a WHERE a.num=1
運(yùn)行結(jié)果:
可以看到在上述基礎(chǔ)上過(guò)濾出了編號(hào)為1的記錄。
3.更復(fù)雜的示例:
下面是一個(gè)稍微復(fù)雜一些的示例,我們可以使用ROW_NUMBER()函數(shù)為每個(gè)部門(mén)的員工按工資進(jìn)行排名。我們需要將salary
結(jié)果分組到每個(gè)department_id
中,然后根據(jù)salary
降序排序。以下是我們的示例代碼:
SELECT row_no, department_id, first_name, last_name, salary FROM ( SELECT department_id, first_name, last_name, salary, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) as row_no FROM employee) t WHERE row_no <= 5;
該查詢(xún)使用了子查詢(xún),首先它將需要的列投射到ROW_NUMBER() OVER(PARTITION BY department_id ORDER BY salary DESC)
中,其中PARTITION BY department_id
的作用是將結(jié)果按部門(mén)分組,而ORDER BY salary DESC
則按工資降序排列。最后,我們只取每個(gè)部門(mén)及其前5名員工。
我們可以看到,ROW_NUMBER()函數(shù)對(duì)于數(shù)據(jù)分析非常有用,可以幫助我們完成許多復(fù)雜的任務(wù)。
總結(jié)
到此這篇關(guān)于mysql數(shù)據(jù)庫(kù)row_number函數(shù)的文章就介紹到這了,更多相關(guān)mysql row_number函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 4G內(nèi)存服務(wù)器配置優(yōu)化
MySQL對(duì)于web架構(gòu)性能的影響最大,也是關(guān)鍵的核心部分。下面我們了解一下MySQL優(yōu)化的一些基礎(chǔ),MySQL自身(my.cnf)的優(yōu)化2017-07-07MySQL分庫(kù)分表動(dòng)態(tài)擴(kuò)容縮容方式
MySQL分庫(kù)分表動(dòng)態(tài)擴(kuò)容縮容方案,通過(guò)選擇數(shù)據(jù)庫(kù)中間件,設(shè)計(jì)分庫(kù)分表方案,進(jìn)行環(huán)境測(cè)試,完成單庫(kù)單表到分庫(kù)分表的遷移,實(shí)現(xiàn)雙寫(xiě)方案,并上線(xiàn)提供服務(wù),擴(kuò)容時(shí),通過(guò)增加數(shù)據(jù)庫(kù)服務(wù)器,呈倍數(shù)擴(kuò)容,由DBA負(fù)責(zé)庫(kù)表遷移,無(wú)需修改路由規(guī)則,即可基于新的資源提供服務(wù)2025-02-02Mysql 根據(jù)一個(gè)表數(shù)據(jù)更新另一個(gè)表的某些字段(sql語(yǔ)句)
這篇文章主要介紹了Mysql 根據(jù)一個(gè)表數(shù)據(jù)更新另一個(gè)表的某些字段,本文給出了sql語(yǔ)句,感興趣的朋友可以跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05MySQL數(shù)據(jù)庫(kù)中使用REPLACE函數(shù)示例及實(shí)際應(yīng)用
本文詳細(xì)介紹了MySQL中的REPLACE函數(shù),包括其基本語(yǔ)法、用法和實(shí)際應(yīng)用場(chǎng)景,REPLACE函數(shù)主要用于替換字符串中的某些子字符串,對(duì)大小寫(xiě)敏感,文章還通過(guò)多個(gè)示例展示了REPLACE函數(shù)的實(shí)際應(yīng)用,需要的朋友可以參考下2024-10-10MySQL 中 blob 和 text 數(shù)據(jù)類(lèi)型詳解
本文主要介紹了MySQL中blob和text數(shù)據(jù)類(lèi)型詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02