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

MySQL窗口函數(shù) over(partition by)的用法

 更新時(shí)間:2024年02月23日 15:25:50   作者:xia_codings  
本文主要介紹了MySQL窗口函數(shù) over(partition by)的用法, partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎(chǔ)上,只對其中某些字段做分組排序,下面就來介紹一下具體用法,感興趣的可以了解一下

概念

開窗函數(shù),分析函數(shù)用于計(jì)算基于組的某種聚合值,它和聚合函數(shù)的不同之處是:對于每個(gè)組返回多行,而聚合函數(shù)對于每個(gè)組只返回一行。開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個(gè)數(shù)據(jù)窗口大小可能會隨著行的變化而變化

語法

row_number() over(partition by 分組列 order by 排序列 desc) as rowno

rank() over(partition by 分組列 order by 排序列 desc) as rowno

dense_rank() over(partition by 分組列 order by 排序列 desc) as rowno

row_number()是對行的排序編號:不重復(fù):1,2,3,4,5,6
rank()是對行的排序編號:會重復(fù),總數(shù)不變:1,1,3,3,5,6
dense_rank()是對行的排序編號:會重復(fù),總數(shù)減少:1,1,2,2,3,4

row number() + over()中添加partition by 則表示按照對象分組后排序編號

在使用 row_number() over()函數(shù)時(shí)候,over()里頭的分組以及排序的執(zhí)行晚于 where 、group by,但不晚于 order by 的執(zhí)行。

需求案例:按 orderId 然后從每組取出 lastUpdateTime 最大的一條紀(jì)錄

SELECT  *  FROM
 ( SELECT *, ROW_NUMBER () OVER (PARTITION BY orderId  ORDER BY lastUpdateTime DESC) rn 
		FROM tableName	) t        
WHERE t.rn <= 1

另一種實(shí)現(xiàn) 利用substring_index 取某個(gè)字段

這里實(shí)現(xiàn)是通過對相應(yīng)字段分組,然后通過group_concat函數(shù)將 orderId 字段按照更新時(shí)間lastUpdateTime 字段排序并連接成一個(gè)字符串,group函數(shù)默認(rèn)的缺省值是按照逗號分割,最后通過subString_index函數(shù)分割逗號并調(diào)用第一個(gè)

SELECT orderId,
SUBSTRING_INDEX(GROUP_CONCAT(status ORDER BY lastUpdateTime DESC ),',',1) status
FROM tableName	
GROUP BY orderId

PARTITION BY與GROUP BY區(qū)別

group by是分組函數(shù),partition by是分析函數(shù)

在執(zhí)行順序上:from > where > group by > having > order by,而partition
by應(yīng)用在以上關(guān)鍵字之后,可以簡單理解為就是在執(zhí)行完select之后,在所得結(jié)果集之上進(jìn)行partition by分組

partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎(chǔ)上,只對其中某些字段做分組排序,而group
by則只保留參與分組的字段和聚合函數(shù)的結(jié)果

官方文檔:https://dev.mysql.com/doc/refman/8.0/en/window-functions.html

優(yōu)質(zhì)解析:

https://blog.csdn.net/weixin_51146329/article/details/127856341

https://blog.csdn.net/ZYC88888/article/details/129676229

到此這篇關(guān)于MySQL窗口函數(shù) over(partition by)的用法的文章就介紹到這了,更多相關(guān)MySQL over(partition by)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL COALESCE 函數(shù)使用示例詳解

    MySQL COALESCE 函數(shù)使用示例詳解

    COALESCE是一種SQL函數(shù),用于返回參數(shù)列表中第一個(gè)非NULL的值,它常用于處理可能存在NULL值的場景,并提供默認(rèn)值或備用值,這篇文章給大家介紹MySQL COALESCE 函數(shù)使用,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • MySQL數(shù)據(jù)庫存儲的路徑反斜杠"\"消失了的問題解決

    MySQL數(shù)據(jù)庫存儲的路徑反斜杠"\"消失了的問題解決

    文章主要討論了在將包含反斜杠路徑存入數(shù)據(jù)庫時(shí)遇到的問題的解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-05-05
  • MySQL查詢時(shí)指定使用索引的實(shí)現(xiàn)

    MySQL查詢時(shí)指定使用索引的實(shí)現(xiàn)

    在MySQL中,可以通過指定查詢使用的索引來提高查詢性能和優(yōu)化查詢執(zhí)行計(jì)劃,本文就來介紹一下MySQL查詢時(shí)指定使用索引的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 優(yōu)化MySQL的慢查詢過程

    優(yōu)化MySQL的慢查詢過程

    這篇文章主要介紹了優(yōu)化MySQL的慢查詢過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法

    MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法

    這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • mysql8.0.21安裝教程圖文詳解

    mysql8.0.21安裝教程圖文詳解

    這篇文章主要介紹了mysql8.0.21安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • MySQL唯一索引與邏輯刪除沖突的解決方案匯總

    MySQL唯一索引與邏輯刪除沖突的解決方案匯總

    這篇文章主要介紹了在業(yè)務(wù)系統(tǒng)中使用邏輯刪除時(shí),如何處理唯一索引與邏輯刪除沖突的問題,文章介紹了多種解決方案,包括將刪除標(biāo)識設(shè)置為NULL、使用時(shí)間戳、新增刪除唯一標(biāo)識字段、虛擬生成列、物理刪除加歷史表以及引入外部緩存,需要的朋友可以參考下
    2025-11-11
  • 在?MySQL?中快速的復(fù)制一張表包括表結(jié)構(gòu)和數(shù)據(jù)

    在?MySQL?中快速的復(fù)制一張表包括表結(jié)構(gòu)和數(shù)據(jù)

    文章介紹了四種復(fù)制MySQL表的方法,包括CREATE?TABLE...SELECT、CREATE?TABLE...LIKE...INSERT、mysqldump工具和物理文件復(fù)制,每種方法都有其適用場景和優(yōu)缺點(diǎn),面試時(shí),應(yīng)根據(jù)表的大小、結(jié)構(gòu)完整性、效率和適用場景選擇合適的方法,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 利用mycat實(shí)現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例

    利用mycat實(shí)現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例

    本篇文章主要介紹了利用mycat實(shí)現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例,mycat是最近很火的一款國人發(fā)明的分布式數(shù)據(jù)庫中間件,它是基于阿里的cobar的基礎(chǔ)上進(jìn)行開發(fā)的,有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 查詢MySQL用戶兩種的最常用方法總結(jié)

    查詢MySQL用戶兩種的最常用方法總結(jié)

    在MySQL數(shù)據(jù)庫管理中,查看用戶信息是權(quán)限控制和安全審計(jì)的基礎(chǔ)操作,這篇文章主要介紹了查詢MySQL用戶兩種的最常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12

最新評論

洱源县| 江安县| 甘肃省| 双柏县| 奉贤区| 沁阳市| 雅江县| 昭平县| 丰台区| 侯马市| 兴海县| 双江| 马公市| 尼木县| 怀柔区| 青海省| 周至县| 雷波县| 清水河县| 东乌珠穆沁旗| 资中县| 苍山县| 遂川县| 海盐县| 芮城县| 呼图壁县| 天祝| 平原县| 观塘区| 长宁区| 松滋市| 德清县| 成都市| 嘉善县| 望城县| 马边| 德兴市| 皋兰县| 赤峰市| 郧西县| 通江县|