计算emp表中的所有人员的平均薪水 select avg(sal) from as 平均薪水 emp; 计算emp表中最高薪水 select max(sal) from emp; 计算emp表中最低薪水 select min(sal) from emp; 计算emp表中薪水大于1000的人员的个数 select count(*) from emp where sal>1000; 计算emp表中薪水的总和 select sum(sal) as 薪水总和 from emp; 计算emp表中薪水和津贴的总和 (1)select sum(sal+nvl(comm,0)) from emp; (2)select sum(sal)+sum(nvl(comm,0)) from emp;
?
14.【上机】完成下面的sql语句,练习分组查询,groupby和having子句,并截图表示出结果。
1.求各部门最高薪水 分析:“各部门“,就是按部门分组; select max(sal) from emp group by deptno; select deptno,max(sal) from emp group by deptno; 2.按照部门和职位分组,分别求最高薪水,该组人员个数 (1)按部门分组:select deptno,max(sal),count(*) from emp group by deptno; (2)按职位分组:select job,count(*) from emp group by job; 3.求薪水最高的员工姓名 select ename from emp where sal=(select max(sal) from emp); 4.求平均薪水是2000以上的部门 select deptno from emp group by deptno having avg(sal)>2000; 5.求每个部门的平均薪水,并按照薪水降序排列 select deptno,avg(sal) 平均薪水 from emp group by deptno order by 平均薪水; 6.求每个部门薪水在1200以上的雇员的平均薪水、最高薪水,并且分组结果中只包含平均薪水大于1500的部门,排序按照部门平均薪水倒序排列 select deptno,avg(sal),max(sal) from emp where sal>1200 group bydeptno having avg(sal)>2500 order by avg(sal) desc; 7.把雇员按部门分组, 求最高薪水, 部门号, 过滤掉名字中第二个字母是‘A‘的, 要求分组后的平均薪水>1500, 按照部门编号倒序排列 select deptno,count(*) from emp where ename not like ‘_A%‘group by deptno having avg(sal)>1500 order by deptno desc;
15.下面的sql语句为什么不行?说出你的理由。
select ename,deptno,avg(sal) from emp group by deptno; 要查询的字段必须是单组分组函数和被分组的字段。此题中的”ename”既不是单组分组函数,也不是被分组的字段,所以报错。
16.说出:where、groupby、having、order by的执行顺序
执行顺序:where>group by>having>order by。
17.【上机】完成下面的sql语句,练习子查询,并截图表示出结果。
1.求平均薪水最高的部门的部门编号 select max(平均薪水) from (select deptno,avg(sal) 平均薪水 from emp group by deptno); 2.求出emp表中哪些人是经理人,打印出名字和编号 select ename,empnofrom emp where job=‘MANAGER‘; 3.求比普通员工的最高薪水还要高的经理人名称 select ename,sal from emp where job in (‘MANAGER‘,‘PRESIDENT‘) and sal> (select max(sal) from emp where job not in(‘MANAGER‘,‘PRESIDENT‘)); 4.每个部门平均薪水的等级(需要用到表的连接) select deptno,部门平均薪水,grade from (select deptno,avg(sal) 部门平均薪水 from emp group by deptno),salgrade where 部门平均薪水 between losal and hisal ;
?
18.为什么需要对查询出的数据做分页处理?
在列表查询时由于数据量非常多,一次性查出来会非常慢;就算一次性查出来了,也不能一次性显示给客户端。所以要把数据分批查询出来,每页显示一定量的数据,这就是数据分页。 我们经常会碰到要取某次查询结果的n到m条纪录,这里也用到了分页思想。
?
19.说明Oracle数据库如何实现分页。
20.Oracle中的分页处理依赖于哪个字段? mysql中分页处理使用什么来实现?
Oracle : rownum; Mysql : limit;
21.【上机】完成下面的sql语句,并截图表示出结果。
1.查询薪水最高的前5个人 select * from (select ename,sal from emp order by sal desc) where rownum<=5; 2.查询薪水排名(从高到低)在5-10之间的员工 select ename,sal,rn,rownum from (select t.*,rownum as rn from (select rownum,sal from emp order by sal desc) t) ab where rn>5 and rn<=10;
?
22.为什么需要表连接? 常用的表连接查询有哪几种?分别适用于哪种情况?
数据库是由多张表组成的存储结构,并通过多张表之间的关系建立起完整有效的数据存储形式。为了获得多张表之间的完整有效的数据联系,数据库查询语言SQL提供了强大的表连接查询功能。表连接就是将多个表中的数据连接到一起的查询,即连接操作可以在一个select语句中完成从多个表中查询和处理数据的功能。
23.为什么需要笛卡尔积?笛卡尔积的作用是? (编辑:淮安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|