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

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ǔ)上,只對(duì)其中某些字段做分組排序,下面就來(lái)介紹一下具體用法,感興趣的可以了解一下

概念

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

語(yǔ)法

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()是對(duì)行的排序編號(hào):不重復(fù):1,2,3,4,5,6
rank()是對(duì)行的排序編號(hào):會(huì)重復(fù),總數(shù)不變:1,1,3,3,5,6
dense_rank()是對(duì)行的排序編號(hào):會(huì)重復(fù),總數(shù)減少:1,1,2,2,3,4

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

在使用 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)是通過(guò)對(duì)相應(yīng)字段分組,然后通過(guò)group_concat函數(shù)將 orderId 字段按照更新時(shí)間lastUpdateTime 字段排序并連接成一個(gè)字符串,group函數(shù)默認(rèn)的缺省值是按照逗號(hào)分割,最后通過(guò)subString_index函數(shù)分割逗號(hào)并調(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)鍵字之后,可以簡(jiǎn)單理解為就是在執(zhí)行完select之后,在所得結(jié)果集之上進(jìn)行partition by分組

partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎(chǔ)上,只對(duì)其中某些字段做分組排序,而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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫(kù)的最佳方法(windows服務(wù)器)

    mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫(kù)的最佳方法(windows服務(wù)器)

    網(wǎng)上有很多關(guān)于window下Mysql自動(dòng)備份的方法,可是真的能用的也沒(méi)有幾個(gè),有些說(shuō)的還非常的復(fù)雜,難以操作,這里腳本之家小編為大家分享與整理了幾個(gè)軟件方便大家使用
    2016-11-11
  • MySQL中關(guān)于臨時(shí)表的一些基本使用方法

    MySQL中關(guān)于臨時(shí)表的一些基本使用方法

    這篇文章主要介紹了MySQL中關(guān)于臨時(shí)表的一些基本使用方法,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • MySQL中按月統(tǒng)計(jì)并逐月累加統(tǒng)計(jì)值的幾種實(shí)現(xiàn)寫(xiě)法

    MySQL中按月統(tǒng)計(jì)并逐月累加統(tǒng)計(jì)值的幾種實(shí)現(xiàn)寫(xiě)法

    有時(shí)候,我們可能有這樣的場(chǎng)景,需要將銷量按月統(tǒng)計(jì),并且按月逐月累加,本文就來(lái)介紹一下MySQL中按月統(tǒng)計(jì)并逐月累加統(tǒng)計(jì)值的幾種實(shí)現(xiàn)寫(xiě)法,感興趣的可以了解一下
    2023-10-10
  • Mysql時(shí)區(qū)的幾種問(wèn)題及解決方法

    Mysql時(shí)區(qū)的幾種問(wèn)題及解決方法

    在使用MySQL時(shí),時(shí)區(qū)設(shè)置容易引發(fā)一些錯(cuò)誤,本文將介紹MySQL時(shí)區(qū)問(wèn)題可能引發(fā)的錯(cuò)誤,并提供一些解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Windows系統(tǒng)下mysql5.7.21安裝詳細(xì)教程

    Windows系統(tǒng)下mysql5.7.21安裝詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了Windows系統(tǒng)下mysql5.7.21安裝詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • ubuntu系統(tǒng)中Mysql ERROR 1045 (28000): Access denied for user root@ localhost問(wèn)題的解決方法

    ubuntu系統(tǒng)中Mysql ERROR 1045 (28000): Acces

    這篇文章主要介紹了ubuntu系統(tǒng)安裝mysql登陸提示 解決Mysql ERROR 1045 (28000): Access denied for user root@ localhost問(wèn)題,需要的朋友可以參考下
    2017-05-05
  • MySQL數(shù)據(jù)優(yōu)化-多層索引

    MySQL數(shù)據(jù)優(yōu)化-多層索引

    這篇文章主要介紹了MySQL數(shù)據(jù)優(yōu)化?多層索引,文章圍繞MySQL數(shù)據(jù)優(yōu)化?多層索引的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2021-12-12
  • MySQL主從同步中的server-id示例詳解

    MySQL主從同步中的server-id示例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL主從同步中server-id的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟記錄

    MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟記錄

    在研發(fā)過(guò)程中可能會(huì)用到將表數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫(kù)中,比如說(shuō)從mysql中遷移到oracle中,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟,需要的朋友可以參考下
    2024-06-06
  • MySQL中建表時(shí)可空(NULL)和非空(NOT NULL)的用法詳解

    MySQL中建表時(shí)可空(NULL)和非空(NOT NULL)的用法詳解

    這篇文章主要介紹了MySQL中建表時(shí)可空(NULL)和非空(NOT NULL)的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論