- MySQL 8從入門到精通(視頻教學版)
- 王英英
- 379字
- 2019-11-22 18:25:59
6.9 MySQL 8.0的新特性2——窗口函數
在MySQL 8.0版本之前,沒有排名函數,所以當需要在查詢當中實現排名時,必須手寫@變量,比較麻煩。
在MySQL 8.0版本中,新增了一個窗口函數,用它可以實現很多新的查詢方式。窗口函數類似于SUM()、COUNT()那樣的集合函數,但它并不會將多行查詢結果合并為一行,而是將結果放回多行當中。也就是說,窗口函數是不需要GROUP BY的。
下面通過案例來講述通過窗口函數實現排名效果的方法。
創建公司部門表branch,包含部門的名稱和部門人數兩個字段,創建語句如下:

查詢數據表branch中的數據:

對公司部門人數按從小到大進行排名,可以利用窗口函數來實現:

這里創建了名稱為w1的窗口函數,規定對brcount字段進行排序,然后在SELECT子句中對窗口函數w1執行rank()方法,將結果輸出為rank字段。
需要注意,這里的window w1是可選的。例如,在每一行中加入員工的總數,可以這樣操作:

可以一次性查詢出每個部門的員工人數占總人數的百分比,查詢結果如下:

推薦閱讀
- 64位匯編語言的編程藝術
- Python數據挖掘與機器學習實戰
- Python機器學習經典實例
- Java應用開發技術實例教程
- C語言課程設計
- Learning OpenStack Networking(Neutron)
- C和C++游戲趣味編程
- Babylon.js Essentials
- Mastering C++ Multithreading
- Android驅動開發權威指南
- Serverless Web Applications with React and Firebase
- AMP:Building Accelerated Mobile Pages
- Java EE 8 and Angular
- Mobile Forensics:Advanced Investigative Strategies
- 分布式數據庫HBase案例教程