mysql小技巧: 窗口函數(shù)
2023-08-17 11:26 作者:StepfenShawn | 我要投稿
窗口函數(shù)是我最近在做數(shù)據(jù)分析時學到的小技巧, 下面就寫一篇blog記錄一下。。。
比起熟悉的 group by 操作, 窗口函數(shù)的好處就是不會不減少原表的行數(shù), 以及使代碼變得更加優(yōu)雅(bushi)。
首先來看看 mysql 窗口函數(shù)的語法格式:
over 是關鍵字,用來指定函數(shù)執(zhí)行的窗口范圍
而子句則有三類:
partition子句:窗口按照那些字段進行分組,窗口函數(shù)在不同的分組上分別執(zhí)行。
order by子句:按照哪些字段進行排序,窗口函數(shù)將按照排序后的記錄順序進行編號。
frame子句:定義子集的規(guī)則,通常用來作為滑動窗口使用。
比如要根據(jù)班級進行分組并按年紀進行排序, 使用rank函數(shù)計算排名:
比如說要操作 Logs 表連續(xù)出現(xiàn)次數(shù)至少3次的數(shù)字:
思路是使用 with 語句創(chuàng)建一個運用完窗口函數(shù)的臨時表 p:
當然 mysql 支持的窗口函數(shù)還有很多, 需要用到的時候就直接查 api 啦。。。
標簽: