1分析函数
分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行
rank_number()
查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracle的分页
例如:SELECT tname,sal,row_number() OVER(ORDER BY sal DESC) 降序 FROM teacher;
查询结果如图:
rank()
排序结果如有并列成绩,则并列成绩就会占取下一顺序的位置,下一个成绩则会跳过下一序号排列
例如:SELECT tname,sal,RANK() OVER(PARTITION BY deptno ORDER BY sal) 降序 FROM teacher;
dense_rank()
查询的排序结果如果有相同成绩,则相同的成绩名次并列但不占下一个名次的位置,查询的结果还是顺序的
例如:SELECT tname,sal,dense_rank() OVER(PARTITION BY deptno ORDER BY sal DESC) 降序 FROM teacher;
2.聚合函数
聚合函数是基于一组数据来返回结果,返回的结果只有一个值
常用聚合函数有avg() max() sum() min() count(0);
--老师工资平均数
SELECT AVG(sal) FROM teacher;
--老师工资总数
SELECT SUM(sal) FROM teacher;
--老师总数
SELECT COUNT(0) FROM teacher;
注:面对大量数据时count(0)的处理效率要明显高于count(*)
--老师工资最大值
SELECT MAX(sal) FROM teacher;
-老师工资最小值
SELECT MIN(sal) FROM teacher;-
--查询各部门的编号,最高工资,最低工资,工资总数,平均工资,并按照部门的工资总数降序排列
SELECT deptno,MAX(sal),MIN(sal),SUM(sal),AVG(sal) FROM teacher GROUP BY deptno ORDER BY SUM(sal);