【SQL】開窗函式
1.為什麼用開窗函式(什麼情況用)
- eg:假設一個部門有很多人,又有很多部門,想求每個部門的平均工資
- 一般情況下,group by部門,只會得到部門名和最後的平均工資
- 利用開窗函式,還可以另外顯示每個部門的人員資訊
2.基本語法
# function:聚合函式 # expression:你想要的列(工資) function (expression) OVER (PARTITION BY column ORDER BY column ASC/DESC ROWS [···])
- OVER():必須有,其餘的不是必須的
- eg:計算累計工資
- 姓名(name)、部門(department)、小組(group)、工資(salary)、入職日期(join_date)
- PARTITION(分割) BY
- 每個部門的 - PARTITION BY department
- 每個部門及小組的 - PARTITION BY department,group
- ROWS
- 預設:ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
- (unbounded preceding and current row 所有前面的行和現在的行)
- ROWS BETWEEN (x 是一個數值) …… AND ……
- UNBOUNDED PRECEDING(前面所有行)
- x PRECEDING (前x行)
- x FOLLOWING (後x行)
- CURRENT ROW (當前行)
- function (expression)
- avg(column)
- count(*) / count(column)
- dense_rank( )
- lag(column [, offset ]) / lead(……)
- max(column) , min(column), median(column)
相關推薦
【SQL】開窗函式
參考連結:https://b23.tv/Ktb0oL 1.為什麼用開窗函式(什麼情況用) eg:假設一個部門有很多人,又有很多部門,想求每個部門的平均工資
Sql Server 開窗函式Over()的使用例項詳解
利用over(),將統計資訊計算出來,然後直接篩選結果集 declare @t table( ProductID int,ProductName varchar(20),ProductType varchar(20),Price int)
【interview】箭頭函式和普通函式的區別
一、 箭頭函式是匿名函式的簡寫,不能作為建構函式,不能使用new 二、箭頭函式不能繫結arguments物件,arguments物件包含了函式執行時的所有引數,arguments只是像陣列,真正意義上並不是陣列,不可以使用陣列的方法
SQL Server 開窗函式 Over()代替遊標的使用詳解
前言: 今天在優化工作中遇到的sql慢的問題,發現以前用了挺多遊標來處理資料,這樣就導致在資料量多的情況下,需要一行一行去遍歷從而計算需要的資料,這樣處理的結果就是資料慢,容易卡死。
【SQL】exec執行sql語句時新增變數並返回結果
開發過程中,會有跨庫查詢的需求。 其中最常見的方式就是通過 資料庫名+表名的方式來跨庫訪問 比如:db_school.dbo.students
【 js 】 建構函式返回的注意事項
<!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />
【SQL】模糊查詢
技術標籤:# 資料庫 文章目錄 【前言】【正文】1、%2、_3、[ ] 4、[^ ]5、查詢內容包含萬用字元時
【C++】虛擬函式和純虛擬函式
https://zhuanlan.zhihu.com/p/37331092 虛擬函式和純虛擬函式 https://blog.csdn.net/u012206617/article/details/87697667虛擬函式和純虛擬函式
【C++】 建構函式為什麼不能宣告為虛擬函式,解構函式可以
轉自: https://www.cnblogs.com/lpxblog/p/5890933.html 建構函式不能宣告為虛擬函式,解構函式可以宣告為虛擬函式,而且有時是必須宣告為虛擬函式。
【SQL】LeetCode-Customers Who Never Order
LeetCode 183:Customers Who Never Order 【Description】 Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never o
【SQL】LeetCode-Nth Highest Salary
技術標籤:SQL LeetCode 177:Nth Highest Salary 【Description】 Write a SQL query to get the nth highest salary from the Employee table.For example, given the above Employee table, the nth highest
箭頭函式寫法_【JavaScript】箭頭函式
技術標籤:箭頭函式寫法 箭頭函式 箭頭函式是在es6中引入的,用法十分簡單,允許使用=>定義函式
【SQL】LeetCode-Duplicate Emails
技術標籤:SQL LeetCode 182:Duplicate Emails 【Description】 Write a SQL query to find all duplicate emails in a table named Person.
【SQL】LeetCode-Employees Earning More Than Their Managers
技術標籤:SQL LeetCode 181:Employees Earning More Than Their Managers 【Description】 The Employee table holds all employees including their managers. Every employee has an Id, and there is also
【SQL】LeetCode-Second Highest Salary
技術標籤:SQL LeetCode 176:Combine Two Tables 【Description】 Write a SQL query to get the second highest salary from the Employee table.For example, given the above Employee table, the query sho
【PLSQL】Oracle函式之LISTAGG
技術標籤:EBS 對其作用,官方文件的解釋如下: For a specified measure, LISTAGG orders data within each group specified in the ORDER BY clause and then concatenates the values of the measure column
【SQL】LeetCode-Delete Duplicate Emails
技術標籤:SQL LeetCode 196:Delete Duplicate Emails 【Description】 Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smalles
【SQL】獲取最近一週日期列表
技術標籤:資料庫# SQL開發總結sql 文章目錄 MySQLOracle MySQL 使用MySQL需要構建輔助表weekdays,表資料參考如下
【SQL】LeetCode-Department Highest Salary
技術標籤:SQL LeetCode 184:Department Highest Salary 【Description】 The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.T
【SQL】關於sql多表查詢:查詢初一一班所有男生的英語成績
技術標籤:sql訓練 student(學生資訊表): class(班級資訊表):score(學生成績表):需求:查詢初一一班所有男生的英語成績