視窗函式之rows的用法 讀書筆記二

2021-06-25 12:18:46 字數 3609 閱讀 8306

--rows的具體用法

select

emp_id,emp_name,dept_id,hire_date,salary,

--首先按dept_id進行分組,其次按照hire_date進行排序,然後再把入職時間小於等於自身的所有員工薪資進行累計

sum(salary) over(partition by dept_id order by hire_date) sum_salary_part_order,

--按照dept_id進行分組,並統計該部門下所有員工的薪資

sum(salary) over(partition by dept_id) sum_salary_part,

--直接按照hire_date進行分組,再把入職時間小於等於自身的所有員工薪資進行累計

sum(salary) over(order by hire_date) sum_salary_order,

--後面均為首先按dept_id進行分組,其次按照hire_date進行排序,且所有統計不能跨越其所在分割槽,故不再重複

--視窗範圍為該分割槽的第一行和該分割槽的最後一行,與sum_salary_part等同

sum(salary) over(partition by dept_id order by hire_date

rows between unbounded preceding and unbounded following) sum_1,

--視窗範圍為該分割槽的第一行和本行,與sum_salary_part_order等同

sum(salary) over(partition by dept_id order by hire_date

rows between unbounded preceding and current row) sum_2,

--視窗範圍為該分割槽的第一行和本行的前一行,統計的是第一行和本行前一行薪資的累計

sum(salary) over(partition by dept_id order by hire_date

rows between unbounded preceding and 1/*value_expr*/ preceding) sum_3,

--視窗範圍為該分割槽的第一行和本行的後一行,統計的是第一行和本行後一行薪資的累計

sum(salary) over(partition by dept_id order by hire_date

rows between unbounded preceding and 1/*value_expr*/ following) sum_4,

--視窗範圍為本行和該分割槽的最後一行,統計的是大於等於本記錄hire_date之後的所有薪資

sum(salary) over(partition by dept_id order by hire_date

rows between current row and unbounded following) sum_5,

--視窗範圍是本行,所以與本行薪資一樣

sum(salary) over(partition by dept_id order by hire_date

rows between current row and current row) sum_6,

--視窗範圍為本行和本行的後一行,統計本行和後一行的薪資累計

sum(salary) over(partition by dept_id order by hire_date

rows between current row and 1/*value_expr*/ following) sum_7,

--視窗範圍為本行和本行的後一行,統計的本行前一行和本分割槽最後一行的薪資累計,如本行為分割槽首行,則直接從本行開始算起

sum(salary) over(partition by dept_id order by hire_date

rows between 1/*value_expr*/ preceding and unbounded following) sum_8,

--視窗範圍為該分割槽的第一行和本行前一行,統計的是本行前一行和本行的薪資累計

sum(salary) over(partition by dept_id order by hire_date

rows between 1/*value_expr*/ preceding and current row) sum_9,

--視窗範圍為該分割槽的本行前value_expr1到本行前value_expr2的累計,本例為本行前2行和前1行的累計,強調value_expr1>value_expr2

sum(salary) over(partition by dept_id order by hire_date

rows between 2/*value_expr1*/ preceding and 1/*value_expr2*/ preceding) sum_10,

--視窗範圍為該分割槽的本行前value_expr1到本行後value_expr2的累計,本例為本行前1行和後2行的累計

sum(salary) over(partition by dept_id order by hire_date

rows between 1/*value_expr*/ preceding and 2/*value_expr*/ following) sum_11,

--視窗範圍為該分割槽的本行後一行和本區最後一行,統計的是本行後一行和本區最後一行的薪資累計

sum(salary) over(partition by dept_id order by hire_date

rows between 1/*value_expr*/ following and unbounded following) sum_12,

--視窗範圍為該分割槽的本行後value_expr1到本行後value_expr2的累計,本例為本行後1行和後2行的累計,強調value_expr1<=value_expr2

sum(salary) over(partition by dept_id order by hire_date

rows between 1/*value_expr1*/ following and 2/*value_expr2*/ following) sum_13,

--視窗範圍為該分割槽的第一行,結束行預設本行,與sum_salary_part_order,sum_2等同

sum(salary) over(partition by dept_id order by hire_date

rows unbounded preceding) sum_14,

--視窗範圍僅為當前行,所以與本行薪資一樣,與sum_6一樣

sum(salary) over(partition by dept_id order by hire_date

rows current row) sum_15,

--視窗範圍為該分割槽的第一行和本行前一行,統計的是本行前一行和本行的薪資累計

sum(salary) over(partition by dept_id order by hire_date

rows 1/*value_expr*/ preceding) sum_16

from employeeinfo

order by dept_id,hire_date;

視窗函式之range的用法(讀書筆記三)

range的具體用法 select emp id,emp name,dept id,hire date,salary,首先按dept id進行分組,其次按照hire date進行排序,然後再把入職時間小於等於自身的所有員工薪資進行累計 sum salary over partition by dep...

linux C函式之access函式的用法

檢查呼叫程序是否可以對指定的檔案執行某種操作。2.函式原型 1 函式標頭檔案 include include 2 函式 int access const char pathname,int mode 3 形參 pathname 需要檢測的檔案路勁名 mode 需要測試的操作模式。4 函式返回值說明 ...

Python之eval函式的用法

a 1,2,3 type a class str type eval a 將字串轉換為列表 class list b 1000 type b class str type eval b 將字串轉換為整形 class int c type c class str type eval c 將字串轉換為字...