ETL复习--2020年3月23日--查询、分组、排序
--2020年3月23日 AM
select * from emp;
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO from emp where comm is null;
--字符串、数值、日期
1985年后入职
select * from emp where hiredate > to_date('19850101','yyyymmdd');
select to_date('19850101','yyyymmdd') from dual;
--dual是伪表,一行一列,可进行简答查询
select power(2,3) from dual;
--power幂指函数
练习题:
1.查询emp表中的详细信息。
select * from emp;
2.查询emp表中的详细信息(指定所有列名)。
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO from emp;
3.查询emp表中姓名和工资信息。
select ENAME, SAL from emp;
4.查询所有的部门号,并去除重复数据。
select distinct deptno from emp;
5.查询工资大于2000的员工信息。
select * from emp where sal>2000;
6.查询佣金为空的员工信息。
select * from emp where nvl(comm,0)=0;
7.查询1983年之后入职的员工信息。
select * from emp where to_char(hiredate,'yyyy')>1983;
8.数据库6大类命令有哪些?
DDL-数据定义语言
DML-数据操作语言
DQL-数据查询语言
DCL-数据控制语言
TCL-事务控制语言
CCL-指针控制语言
--PM
--order by
select EMPNO, ENAME, SAL from emp order by 3 desc;
select EMPNO, ENAME, SAL sa from emp order by sa desc;
select deptno, ENAME, SAL from emp order by deptno desc ,sal asc;
--group by
select deptno, sal from emp group by deptno , sal;
select count(1), deptno from emp group by deptno ;
select deptno from emp group by deptno having(deptno=10);
select distinct deptno from emp where deptno=10;
--having对分组之后的结果进行过滤筛选,配合group by使用
练习题:
1.查询所有员工的编号、姓名、部门编号、职位、薪水,按照薪水降序排列
select EMPNO, ENAME, JOB, SAL, COMM, DEPTNO from emp order by sal desc;
2.查询所有员工信息,按照部门降序排列,部门内按照薪水升序排列
select * from emp order by deptno desc, sal;
3.对部门号进行分组,查询出所有的部门号以及平均工资。
select deptno, avg(sal) from emp group by deptno;
4.查询部门最低工资大于1000的部门号。
select deptno,min(sal) from emp group by deptno having (min(sal)>1000);
--having后应该加聚合函数,不可写作having(sal>1000),因为分组之后每个deptno还是对应多个sal
常用聚合函数count(), max(), min(), avg(), sum()