分组查询
列函数(聚合函数)
sum()-------------求和
max()-------------最大值
min()-------------最小值
avg()-------------平均值
count()-----------统计记录
1、count 的用法
select * from emp;
select count(*) from emp;
select count(1) from emp; 只辨寻一列
select count(ename) from emp;
练习查询员工记录数,员工工资总和,平均工资,最高工资,最低工资是多少 起别名
select count(*) count_emp,sum(sal) sum_sal,avg(sal),max(sal),min(sal) from emp;
2、count
select sum(comm) from emp;-------------列相加
select count(distinct(job)) from emp;--------统计去除重复行后的记录数
分组概念
在一个实体集中每一个实体都有他自己的属性,可以按照属性不同来分组。
属性相当于字段。
3、分组查询的语法格式
执行顺序
select * |列名--5
from 表名--1
where 条件--2
group by 列名--3
having 条件—4 -------having 是对分组之后的数据进行过滤
order by 列名--6
注:1、如果没有 group by 子句,则select子句中只能出现统计函数
2、在统计查询之中,select子句后面只允许出现分组字段和统计函数
3、统计函数允许嵌套使用,但是嵌套之后的select子句中不再允许出现任何字段,包括统计函数
查询每个部门的人数
select deptno,count(*) from emp group by deptno;
select deptno,count(deptno) from emp group by deptno;
查询每个部门的平均工资
select deptno,avg(sal) from emp group by deptno;
例题、
(1)显示平均工资大于2000的部门编号,和平均工资
select deptno,avg(sal)
from emp
group by deptno
having avg(sal)>2000
order by deptno asc;
(2)查询部门编号为20,30的平均工资,并将平均工资大于2000的输出,再将结果按平均工资升序
select deptno,avg(sal)
from emp
where deptno=20 or deptno=30 白富美
group by deptno
having avg(sal)>2000
order by avg(sal) asc;
(3)显示非销售人员工作名称,以及从事同一工作雇员的月工资总和,并且要满足从事同一工作的雇员的月工资合计大于¥5000,输出结果按月工资的合计结果升序排列
select job,sum(sal) from emp where job<>'SALESMAN'
group by job having sum(sal)>5000 order by sum(sal) asc;

浙公网安备 33010602011771号