欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

概念

開窗函數(shù),分析函數(shù)用于計算基于組的某種聚合值,它和聚合函數(shù)的不同之處是:對于每個組返回多行,而聚合函數(shù)對于每個組只返回一行。開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個數(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()是對行的排序編號:不重復:1,2,3,4,5,6
rank()是對行的排序編號:會重復,總數(shù)不變:1,1,3,3,5,6
dense_rank()是對行的排序編號:會重復,總數(shù)減少:1,1,2,2,3,4

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

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

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

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

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

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

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應用在以上關鍵字之后,可以簡單理解為就是在執(zhí)行完select之后,在所得結果集之上進行partition by分組

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

官方文檔: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

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

相關文章

最新評論