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()

posted @ 2020-06-02 22:12  George_King  阅读(327)  评论(0编辑  收藏  举报