Oracle教程
Oracle练习题

Oracle聚合函数

count

取得记录数

sum

求和

Avg

取平均

Max

取最大的数

min

取最小的数

count

● 取得所有的员工数

select count(*) from emp;

Count(*)表示取得所有记录,忽略null,为null值也会取得。

当一行数据所有字段全部为空的场合,count方法是否有效 !

count方法有效!

● 取得津贴不为null员工数

select count(comm) from emp;

采用count(字段名称),不会取得为null的纪录。

● 取得工作岗位的个数

select count(distinct job) from emp;

Distinct可以去除重复的纪录。

sum

Sum可以取得某一个列的和,如果是null会略。

● 取得薪水的合计

select sum(sal) from emp;

● 取得薪水的合计(sal+comm)

select sum(sal+comm) from emp;

从以上结果来看,不正确,原因在于comm字段有null值,所以无法计算,sum会忽略掉,正确的做法是将comm字段转换成0。

select sum(sal+nvl(comm, 0)) from emp;

avg

取得某一列的平均值。

● 取得平均薪水

select avg(sal) from emp;

max

取得某个一列的最大值。

● 取得最高薪水

select max(sal)  from emp;

● 取得最晚入职得员工

select max(to_char(hiredate, 'yyyy-mm-dd')) from emp;

min

取得某个一列的最小值。

● 取得最低薪水

select min(sal)  from emp;

● 取得最早入职得员工

select min(hiredate) from emp;

组合聚合函数

可以将这些聚合函数都放到select中一起使用。

select count(*), sum(sal), avg(sal), max(sal), min(sal) from emp;