Oracle筆記之二(DECODE以及常用窗口函數)
10.利用DECODE進行行列轉換
select '工資' 部門,
sum(decode(k.deptno,'10',k.g)) A
,sum(decode(k.deptno,'20',k.g)) B
,sum(decode(k.deptno,'30',k.g)) C
,sum(decode(k.deptno,'40',k.g)) D
from (select sum(e.sal) g,e.deptno from emp e
left join dept d on d.deptno=e.empno
group by e.deptno) k;
11.Oracle 窗口函數
rank() over(order by emp_age)
dense_rank() over(order by emp_age)
row_number() over(order by emp_age)
avg(age) over(partition by position) avg
sum(age) over(order by age rows between 1 preceding and 1 following)--獲取當前記錄的前一行以及後一行
count(1) over(order by age range betwwen 1 preceding and 1 following) c--差在一歲的數據
select '工資' 部門,
sum(decode(k.deptno,'10',k.g)) A
,sum(decode(k.deptno,'20',k.g)) B
,sum(decode(k.deptno,'30',k.g)) C
,sum(decode(k.deptno,'40',k.g)) D
from (select sum(e.sal) g,e.deptno from emp e
left join dept d on d.deptno=e.empno
group by e.deptno) k;
11.Oracle 窗口函數
rank() over(order by emp_age)
dense_rank() over(order by emp_age)
row_number() over(order by emp_age)
avg(age) over(partition by position) avg
sum(age) over(order by age rows between 1 preceding and 1 following)--獲取當前記錄的前一行以及後一行
count(1) over(order by age range betwwen 1 preceding and 1 following) c--差在一歲的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.