Oracle查询相关

所有查询基于SCOTT用户下的EMPDEPT两张表。
1.查询部门编号是20的员工信息。
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
from EMP 
where  DEPTNO = 20;

asd

2.查询工作为CLERK的员工的员工号,员工名和部门号
select EMPNO, ENAME, DEPTNO
from EMP
where JOB = 'CLERK';

asd

3.查询奖金COMM高于工资SAL的员工信息。
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
from emp
where COMM > SAL;

asd

4.查询奖金COMM高于工资SAL20%的员工信息
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
from EMP
where COMM > SAL * 0.2;

asd

5.查询部门编号是10并且工作为MANAGER的员工和部门编号是20并且工作为CLERK的员工信息
select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
from EMP
where (DEPTNO = 10 AND JOB = 'MANAGER') 
OR (DEPTNO = 20 AND JOB = 'CLERK');

sa

6.查询工作不是MANAGER和CLERK,并且工资大于或等于2000的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE JOB NOT IN ('MANAGER', 'CLERK')
AND SAL >= 2000;

as

7. 查询有奖金的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE COMM IS NOT NULL AND COMM != 0;

sa

8.查询所有员工的人数和他们的平均工资
SELECT COUNT(*), AVG(SAL)
FROM EMP;

asd

9.查询没有奖金或奖金低于100的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE COMM IS NULL OR COMM < 100;

asd

10.查询最近两年入职的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM emp
WHERE MONTHS_BETWEEN(SYSDATE, HIREDATE)/12 <= 2;

asd

11.查询工龄大于或等于10年的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE MONTHS_BETWEEN(SYSDATE, HIREDATE)/12 >= 10;
-- select MONTHS_BETWEEN(SYSDATE, HIREDATE)/12 FROM EMP;

asd

12.查询员工信息,要求以首字母大写的方式显示所有员工的姓名
SELECT EMPNO,INITCAP(ENAME), JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP;

asd

13.查询员工名正好为6个字母的员工信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE ENAME LIKE '______';

asd

14.查询员工名字中不包含字母S的员工
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE ENAME NOT LIKE '%S%';

asd

15.查询员工姓名的第二个字母为M的员工信息。
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE ENAME LIKE '_M%';

asd

16.查询所有员工姓名的前三个字符
SELECT SUBSTR(ENAME, 1, 3)
FROM EMP;

asd

17.查询所有员工的姓名,如果包含字母s,则用S替换
SELECT REPLACE(ENAME, '%s%', '%S%') AS 大写替换小写
FROM EMP;

asd

18.查询所有员工的姓名和入职日期,并按入职日期从先到后进行排序
SELECT ENAME AS 姓名,HIREDATE AS 入职日期
FROM EMP
ORDER BY HIREDATE ASC;

asd

19.查询所有员工的姓名,工作,工资,按工作降序排序,若工作相同,则按工资升序排序
SELECT ENAME, JOB, SAL
FROM EMP
ORDER BY JOB DESC, SAL;

asd

20.显示所有员工的姓名,入职的年份和月份按入职日期所在的月份排序。若月份相同,则按入职的年份排序
SELECT ENAME,EXTRACT(year FROM HIREDATE) AS hireyear,EXTRACT(month FROM HIREDATE) as hiremonth
FROM EMP
ORDER BY EXTRACT(month FROM HIREDATE), EXTRACT(year FROM HIREDATE);

asd

21.查询每个部门中的员工数量,平均工资和平均工作年限
SELECT DEPTNO, COUNT(DEPTNO), AVG(SAL), AVG(MONTHS_BETWEEN(SYSDATE, HIREDATE))
FROM EMP
GROUP BY DEPTNO;

asd

22.查询各个部门的人数及平均工资
SELECT DEPTNO, COUNT(DEPTNO), AVG(SAL)
FROM EMP
GROUP BY DEPTNO;

asd

23.查询各种工作的最低工资,并输出最低工资低于3000的工作名称
SELECT MIN(SAL) AS 最低工资, JOB
FROM EMP
GROUP BY JOB
HAVING MIN(SAL) < 3000;

asd

24.查询各个部门中不同工种的最高工资
select d.dname 部门, e.job 工作,max(e.sal) 
from DEPT d join emp e on (d.DEPTNO = e.DEPTNO)
group by d.dname, e.job;

asd

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值