分组查询

 

列函数(聚合函数)

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;

posted @ 2019-07-20 15:18  鹿小葵sr  阅读(314)  评论(0)    收藏  举报