京东-供应链研发部-数据库开发岗面试题:
1.oracle分析函数:
语法:function(参数) over(partition/order by/windowing);
Corr() over() –表记录相关系数
Stddev() over()-样本标准差
Stddev_samp() over() –样本标准差
Stddev_pop() over()-总体标准差
Variance() over()-样本方差
Var_samp() over()-样本方差
Var_pop() over()-总体方差
Covar_samp over()-表记录样本协方差
Covar_pop over() –表记录总体协方差
Percentile_disc(0.5) within group(order by salary) over(partition by job) – 各工种的平均工资
Cume_dist() over(partition by job order by salary)—各工作下薪资排名比。
Percent_rank() over(partition by job order by salary)-各工作下薪资排名号/该组行数
Ratio_to_report(salary) over(partition by job )-各工作下该薪资占该工作总薪资的占比
Lag(eage,1) over(partition by esex order by salary)-各esex下按薪资排序去前1行
Lead(eage,1) over(partition by esex order by salary)-各esex下按薪资排序取后1行
Max(salary) keep(dense_rank first order by salary desc)-取薪资排名的第一行
Max(salary) keep(dense_rank last order by salary desc)-取薪资排名的最后一行
First_value(salary) over(partition by job order by salary desc)-取各工作下薪资排名第一的薪资
Last_value(ename) over(partition by job order by salary desc)-取各工作下薪资排名最后的人名
Ntile(3) over(partition by job order by salary desc)-将各工作下的记录平均分成3份,多出的按顺序分给前面的组
Dense_rank() over(partition by job order by age)-各工作下按年龄连续排序
Rank() over(partition by job order by age)-各工作下按年龄跳跃排序
Max(salary) over(parition by job order by age)-各工作下按年龄排序取最大薪资
Min(salary) over(partition by job order by age)-各工作下按年龄排序取最小薪资
Avg(salary) over(partition by job order by age)-各工作下按年龄排序取平均工资
Sum(salary) over(partition by job order by age)-各工作下按年龄排序取总工资
Count(*) over(partition by job order by age) –各工作下按年龄排序取总记录数
2.oracle聚合函数:
Avg()
Round()
Sum()
Count()
Min()
Max()
3.oracle字符串函数:
LOWER() –转小写
UPPER()-转大写
LTRIM()-左删除空格
RTRIM()-右删除空格
CONCAT()-连接
REPLACE()-更新内容
LEN()-长度
4.oracle表关联:
Outer join –外连接
Self join –自连接 表A 关联表A,找出自表里字段的内在关系,例如求科目字段里:语文>数学的人,本表中父子节点的对应输出
Cross join –交叉连接-(A表)n*(B表)m=nm条记录 ,笛卡尔积
Full join –全连接
Right join 右连接
Left join 左连接
Inner join 内连接
Natural join 自然连接 –表A和表B相同字段等值连接
5.oracle行列转换方法:
name 学科 成绩
a 语文 90
b 数学 90
b 英语 100
name yu shu wai
a 90
b 9