其他分享
首页 > 其他分享> > 简单的分组查询和多表查询

简单的分组查询和多表查询

作者:互联网

简单的分组查询和多表查询

-- 分组查询

-- 关键字:group by 限定之后的分组
-- 示例
select job '岗位',round(avg(sal),2) '平均工资'
from emp group by job;
-- 查询每个部门的平均工资
select deptno '部门',round(avg(sal),2) '平均工资' from emp group by deptno;
-- 查询每个部门的最低工资和最高工资
select deptno '部门',min(sal) '最低工资',max(sal) '最高工资' from emp group by deptno;
-- 查询每个岗位的总工资
select job '岗位', sum(sal) '工资总和' from emp group by job;
-- 查询每个部门有多少员工
select deptno '部门' ,count(ename) '员工人数' from emp group by deptno;

-- 查询每个岗位的人数
select job '岗位',count(job) '岗位人数' from emp group by job;

-- 查询每个部门中每个岗位的平均工资
select deptno '部门号',job '岗位',round(avg(sal),2) '平均工资'
from emp group by deptno ,job order by deptno;
-- 查询每个部门中每个岗位的工资总和
select deptno '部门号' ,job '岗位', sum(sal) '工资总和'
from emp group by deptno,job order by deptno;

-- 分组后的筛选 关键字:having having 只能用在group by 的后面

-- having 后面可以跟列名和函数

-- 查询每个岗位的平均工资 ,显示平局工资高于2000的部门编号和平均工资

select job,round(avg(sal),2)
from emp group by job having avg(sal)>2000;
select job ,sum(sal)
from emp group by job having sum(sal)>2000;

-- 查询语句的关键字的排序:
-- select--->from --->
-- [where 条件表达式]--->[group by 列名]--->[having 条件表达式]--->
-- [order by 列名 [desc]--->[limit m,n];
-- 注意:在查询语句中,各个语句出现的排序不能乱,否则回报错

-- 多表查询

-- 思路:1.分析需要查询的数据在表中的分布情况
-- 2.这些数据在的表,他们之间有什么关系,
-- 直接关系:两张表有联系
-- 间接联系:我要查询的两张表是通过第三张表的某些列联系的
-- 3.就是书写sql语句
-- 查询在DLLAS上班的员工姓名
select ename ,loc
from emp ,dept
where emp.deptno=dept.deptno and loc='DALLAS';
-- 查询在销售部上班的员工姓名 SALES
select ename ,dname
from emp ,dept
where emp.deptno=dept.deptno and dname='SALES';

-- 怎样取表别名 :表名 as 新表名;表名 新表名
select ename ,dname
from emp a,dept b
where a.deptno=b.deptno and dname='SALES';

-- 怎样重新取列名:列名 as 新列名; 列名 新列名;

select ename as '姓名',dname '上班地点'
from emp ,dept
where emp.deptno=dept.deptno and dname='SALES';

标签:多表,--,查询,job,分组,emp,deptno,select
来源: https://www.cnblogs.com/cn-zhouchao/p/16424298.html