SQL面试-窗口函数总结
推荐阅读文章列表
面试考察频率
低频考察函数
想必大家都比较了解高频函数的使用,以下主要讲解低频函数的使用
FIRST_VALUE
select
deptno,
ename,
sal,
first_value(sal) over (partition by deptno order by sal desc) as first_value
from emp;
NTILE
select
deptno,
ename,
sal,
-- 如果分区中的数据不能被均匀地切分成N等份时,最前面的等份(编号较小的)会优先多分配1条数据
ntile(3) over (partition by deptno order by sal desc) as nt3
from emp;
PERCENT_RANK
select
deptno,
ename,
sal,
-- sal_new = (rank - 1) / (partition_row_count - 1), 其中rank表示rank函数排名,partition_row_count 表示该分区的数据行数
percent_rank() over (partition by deptno order by sal desc) as sal_new
from emp;
MEDIAN
select
deptno,
sal,
median(sal) over (partition by deptno)
from emp;
STDDEV
select
deptno,
sal,
stddev(sal) over (partition by deptno)
from emp;
CLUSTER_SAMPLE
select
deptno,
sal
from (
select
deptno,
sal,
-- 当传入两个参数时,表示按照分区行数比例抽取,如下是20%
-- 当传入一个参数时,表示在分区中抽取N行数据
-- 返回值是boolean
cluster_sample(5, 1) over (partition by deptno) as flag
from emp
) t
where flag = true;
#数据人的面试交流地##校招过来人的经验分享#