MySQL的OVER函數是一種窗口函數,它可以在查詢結果中進行分組、排序和聚合操作。通過使用OVER函數,我們可以在查詢結果中添加一列或多列,這些列可以根據指定的窗口進行計算。
使用OVER函數的一般語法如下:
SELECT 列1, 列2, ..., 列n, 函數() OVER (PARTITION BY 列1, 列2, ..., 列m ORDER BY 列x, 列y, ..., 列z) FROM 表名;
其中,函數()可以是各種聚合函數,如SUM、COUNT、AVG等。PARTITION BY子句用于指定分組的列,ORDER BY子句用于指定排序的列。
下面是一些常用的OVER函數的示例:
1. 計算每個部門的銷售總額:
SELECT 部門, 銷售額, SUM(銷售額) OVER (PARTITION BY 部門) AS 部門銷售總額 FROM 銷售表;
2. 計算每個部門的銷售額占比:
SELECT 部門, 銷售額, 銷售額 / SUM(銷售額) OVER (PARTITION BY 部門) AS 銷售額占比 FROM 銷售表;
3. 計算每個部門的銷售額排名:
SELECT 部門, 銷售額, RANK() OVER (PARTITION BY 部門 ORDER BY 銷售額 DESC) AS 銷售額排名 FROM 銷售表;
4. 計算每個部門的銷售額累計值:
SELECT 部門, 銷售額, SUM(銷售額) OVER (PARTITION BY 部門 ORDER BY 銷售額 DESC) AS 銷售額累計值 FROM 銷售表;
通過使用OVER函數,我們可以在查詢結果中靈活地進行各種分組、排序和聚合操作,從而滿足不同的數據分析需求。OVER函數也可以與其他SQL語句結合使用,進一步擴展其功能。
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09
2023-12-09