前言
MySQL 8.0版本推出窗口函數(Window Functions)。
窗口函數為我們提供了一種新的方法來處理查詢結果,可以在不使用GROUP BY子句的情況下進行聚合計算,極大地提高了SQL查詢的靈活性和表現力。
窗口函數
主要分為3類,分別是聚合窗口函數、排序窗口函數、偏移窗口函數
聚合窗口函數: avg、sum、count、max、min等;
排序窗口函數:rank、dense_rank、row_number;
偏移窗口函數:lag、lead
使用語法如下:
語法
使用場景
在不改變查詢結果集的情況下,對結果集中的行進行排序、排名、累計計算等操作。
實例
假設我們有一個銷售數據表,其中包含了每個銷售員的銷售額和銷售日期。現在我們想要計算每個銷售員在每個月的銷售額總和
使用PARTITION BY:
使用GROUP BY:
總結
MySQL 8.0中引入的窗口函數不僅提高了SQL查詢的功能和表現力,還使得在SQL中進行更靈活的數據分析和處理成為可能。
通過窗口函數,我們可以更方便地對數據進行排序、排名、累計計算等操作,從而更好地滿足不同的數據分析需求。