select ltrim(' hello ') from dual;
select ltrim('abcHello ','abc') from dual;
select rtrim(' Hello ') from dual;
select rtrim('abcHello abc','abc') from dual;
select trim(' Hello ') from dual;
select replace('Holle','e','o') from dual ;
select sysdate from dual;
select stddev(4) from dual;
select * from emp e ;
select e.sal,e.deptno , row_number() over(partition by e.deptno order by e.sal desc) rn from emp e;
select stddev(e.sal) over(partition by e.deptno ) rn from emp e;
select * from emp e order by e.deptno,e.sal desc ;
select variance(e.sal) from emp e ;
select stddev(e.sal) from emp e ;
select sum(e.sal)/count(1),sum(e.sal),count(1) from emp e;
select e.sal, rank() over(partition by e.deptno order by e.sal desc) from emp e;
select e.sal, dense_rank() over(partition by e.deptno order by e.sal desc) from emp e;
select e.sal, row_number() over(partition by e.deptno order by e.sal desc) from emp e;
select e.sal, sum(e.sal) over(partition by e.deptno ) from emp e;
select e.sal, avg(e.sal) over(partition by e.deptno ) from emp e;
select e.sal, stddev(e.sal) over(partition by e.deptno ) from emp e;
--unbounded preceding and unbouned following針對當前所有記錄的前一條、後一條記錄,也就是表中的所有記錄
--unbounded:不受控制的,無限的
--preceding:在...之前
--following:在...之後
----顯示各部門員工的工資,並附帶顯示該部分的最高工資。
select e.sal,
last_value(e.sal) over(partition by e.deptno order by e.sal rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
from emp e;
--按照deptno分組,然後計算每組值的累加值
SELECT
SAL,
deptno,
SUM(SAL) OVER(PARTITION BY DEPTNO ORDER BY ENAME) max_sal
FROM SCOTT.EMP;
select e.sal,e.deptno, sum(e.sal) over(partition by e.deptno order by e.sal ) from emp e;
/**
1. 自動彙總函數rollup,cube,
2. rank 函數, rank,dense_rank,row_number
3. lag,lead函數
4. sum,avg,的移動增加,移動平均數
5. ratio_to_report報表處理函數 ,佔百分比
6. first_value,last_value取基數的分析函數
*/
select e.ename,e.deptno,e.sal,sum(e.sal) over(partition by e.deptno order by e.ename ) from emp e;
select e.ename,e.deptno,e.sal,sum(e.sal) over(partition by e.deptno order by e.ename desc ) from emp e;
select e.ename,e.deptno,e.sal,sum(e.sal) over(partition by e.deptno order by e.ename rows BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) from emp e;
-- lag()
select e.ename,
e.deptno,
e.sal,
lag(e.sal) over( order by e.sal desc) front_sal
from emp e
--查找 比 CLARK 工資高的前一名的人名 :BLAKE
select *
from emp e
where e.sal = (
select front_sal
from (
select e.ename,
e.deptno,
e.sal,
lag(e.sal) over(order by e.sal desc) front_sal
from emp e) t
where t.ename = 'CLARK')
--lead()
select e.ename,
e.deptno,
e.sal,
lead(e.sal) over( order by e.sal desc)
from emp e
--查找 比 CLARK 工資低的下一位人員信息 :ALLEN
select *
from emp e
where e.sal = (
select front_sal
from (
select e.ename,
e.deptno,
e.sal,
lead(e.sal) over(order by e.sal desc) front_sal
from emp e) t
where t.ename = 'CLARK')
-- ratio_to_report
select e.ename,
e.deptno,
e.sal,
round(ratio_to_report(e.sal) over( partition by e.deptno),2) precent_sal
from emp e
last
--first_value
select e.ename,
e.deptno,
e.sal,
first_value(e.sal) over( partition by e.deptno order by e.sal desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
from emp e ;
--last_value
--range between unbounded preceding and current row是默認的窗口範圍
select e.ename,
e.deptno,
e.sal,
last_value(e.sal) over( partition by e.deptno order by e.sal desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
from emp e
oracle——SQL複習07
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.