--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 將字串轉換為字...