在这里插入代码片 --统计条数
select count(*) from emp;--推荐的写法
select count(empno)from emp;--count函数统计空列,返回0
select count(comm)from emp;--聚合函数忽略null
select *from emp;
--统计平均值
select avg(p.sal) from emp p;--聚合函数忽略空值,算平均数的时候个数也忽略空值的个数
selsect sum(age)from emp p;--聚合函数除count外,对空列操作 返回null
select *from emp;
--最大、最小、求和
select max(p.sal)最大工资,min(p.sal) 最小工资,sum(p.sal) 工资总和,count(*) 人数 from emp p;
--统计每个部门的最高工资,最低工资,人数,按部门分组统计 group by
select max(p.sal)最大工资,min(p.sal) 最小工资,sum(p.sal) 工资总和,count(*) 人数 from emp p group by deptno;
select max(p.sal)最大工资,min(p.sal) 最小工资,sum(p.sal) 工资总和,count(*) 人数 ,deptno 部门编号 from emp p group by deptno;
--一个非常重要的规则:聚合列和非聚合列不能在一起使用,除非这列在group by之后
--group by 之后可以跟多列,用,隔开
select max(p.sal) 最大工资,
min(p.sal) 最小工资,
sum(p.sal) 工资总和,
count(*) 人数,
deptno 部门编号
from emp p
group by deptno;
---总结一个语法:select 聚合列,聚合列,非聚合列A from 表 by 非聚合列A;正确
-----------------select 聚合列,聚合列,非聚合列B from 表 by 非聚合列A;错误
select max(p.sal) 最大工资,
min(p.sal) 最小工资,
sum(p.sal) 工资总和,
count(*) 人数,
deptno 部门编号,
empno 雇员编号
from emp p
group by deptno,empno;--逻辑错误
--作业:统计一下雇员信息,按年份统计一下入职人数,显示年份和人数两个列
-------按职位统计一下,人数,平均工资,最高工资
select *from emp;
select hiredate 年份, count(*) 人数 from emp p group by hiredate;
select max(p.sal) 最高工资, avg(p.sal) 平均工资, count(*) 人数, job 职位
from emp p
group by job;
Oracle数据库之内置函数练习
最新推荐文章于 2022-07-31 23:29:32 发布