常用的一些分析函數
再在自己安裝的資料的hr使用者模式下測試
<span style="font-size:14px;">SELECT emp.first_name,
emp.salary,
emp.manager_id,
row_number() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) row_number_dept, --薪資在部門中的排行
rownum row_number, --行号
ntile(2) over(ORDER BY emp.salary DESC) page_number_nt, --列傳回每一行所應該被配置設定的桶号
AVG(emp.salary) over(PARTITION BY emp.manager_id) avg_salary_department, --該部門薪水均值
SUM(emp.salary) over(PARTITION BY emp.manager_id) sum_salary_department, --該部門薪水總額
COUNT(emp.salary) over(PARTITION BY emp.manager_id) count_emp_department, --部門所有的員工
dense_rank() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) rank_salary_dept, --該人員的部門薪水排行
dense_rank() over(ORDER BY emp.salary DESC) dense_rank_salary_company, --該人員的全公司密集排行
rank() over(ORDER BY emp.salary DESC) rank_salary_company,--該人員的全公司排行
MIN(emp.salary) over(PARTITION BY emp.manager_id) min_salary_dept, --部門的最低薪水
MIN(emp.salary) keep(dense_rank FIRST ORDER BY emp.salary) over(PARTITION BY emp.manager_id) min_salary_dept_first, --部門的最低薪水
first_value(emp.salary) over(PARTITION BY emp.manager_id ORDER BY emp.salary) min_salary_dept_firstv, --部門的最低薪水
MAX(emp.salary) over(PARTITION BY emp.manager_id) max_salary_dept, --部門的最高薪水
MAX(emp.salary) keep(dense_rank LAST ORDER BY emp.salary) over(PARTITION BY emp.manager_id) max_salary_dept_last, --部門的最高薪水
last_value(emp.salary) over(PARTITION BY emp.manager_id ORDER BY emp.salary) max_salary_dept_lastv, --部門的最高薪水
lag(emp.first_name, 1, '00') over(ORDER BY emp.salary DESC) last_persion, --薪水在自己前一位的人
lead(emp.first_name, 1, '00') over(ORDER BY emp.salary DESC) next_persion --薪水在自己後一位的人
FROM employees emp
ORDER BY emp.salary DESC;</span>
其中ntile函數 文法: ntile(expr) over([partition_clause] order_by_clause) 可以看作是把有序的資料集合平均配置設定到expr指定的數量的桶中,将桶号配置設定給每一行。 如果不能平均配置設定,則較小桶号的桶配置設定額外的行,并且各個桶中能放的行數最多相差1。
其中 rank() over,dense_rank() over,row_number() over函數的差別 http://blog.csdn.net/huhu307/article/details/51177346
其中lag函數 文法:lag ( expression [, offset [, default] ] )
over ( [ query_partition_clause ] order_by_clause ) 落後于誰,offset落後幾位,default不落後任何人時顯示的預設值
lead函數與lag剛好相反。