Oracle基础知识4 : 单表查询3

来源:互联网 发布:科比2000年西决数据 编辑:程序博客网 时间:2024/05/22 00:09

–ANY(list) 与 ALL(list)
–ANY(list) 大于最小的
–ALL(list) 大于最大的
–ANY(list) 小于最大的
–ALL(list) 小于最小的

SELECT ename,salFROM empWHERE sal > ANY(1250,2500,3000);

–查看工资大于(1250,2500,3000)中任意一个的员工

–ORDER BY (排序)

SELECT ename,salFROM empORDER BY sal ASC;--升序SELECT ename,salFROM empORDER BY sal DESC;--降序

–ORDER BY 是有优先级的,首先按照第一个字段排序,
–当该字段中有重复记录时,将这些记录按照第二个字段排序

SELECT ename,job,sal,deptno FROM empWHERE job IN ('SALESMAN','CLERK')ORDER BY sal DESC,deptno ASC;

–查询职业是”SALESMAN”或”CLERK”的员工,通过工资降序排序,工资相同的通过部门号升序排序

SELECT * FROM empORDER BY comm ASC;

–按照绩效将员工信息排序
–当被排序的字段记录为空值时,无条件被认为是最大值

–聚合函数
–MAX()/MIN()/SUM()/AVG()/COUNT()(统计多少个记录)

SELECT COUNT(1) FROM emp;--统计第一个字段SELECT COUNT(comm) FROM emp;--按照 comm 统计, (不统计空值)SELECT COUNT(*) FROM emp; --统计全部数据
SELECT CEIL(AVG(sal)),deptnoFROM empGROUP BY deptno;

–求各部门平均工资

–GROUP BY :

SELECT MAX(sal),MIN(sal),jobFROM empGROUP BY job;

–查询每个部门的最高最低工资
–出现 GROUP BY 都会出现聚合函数 , 但是出现聚合函数不一定出现 GROUP BY

SELECT CEIL(AVG(sal)),deptno,jobFROM empGROUP BY deptno,job;

–GROUP BY 按照多字段分组时 , 两字段(或多字段)相同的查出一条 , 不同的查出多条
–SELECT中有的非聚合字段,GROUP BY中必须要有 。GROUP BY 中的字段 SELECT 中不一定有

SELECT COUNT(*) ,deptno ,jobFROM empGROUP BY deptno,job;

–查询同部门同职位的员工一共多少人

SELECT AVG(sal),deptnoFROM empGROUP BY deptnoHAVING AVG(sal)>2000;

–查看部门的平均工资,前提是该部门的平均工资高于2000
–HAVING 就是 GROUP BY 的 WHERE (HAVING 不能没有 GROUP BY)

SELECT MAX(sal),deptnoFROM empGROUP BY deptnoHAVING AVG(sal)>2000;

–查看平均工资高于2000的那些部门的最高工资是多少
这里写图片描述
emp表↑
这里写图片描述
dept表↑

原创粉丝点击