--查询不重复的职位select distinct job from emp; --查询年薪,起别名,
别名不要用单引号括起来select sal * 12 as nianxin from emp sal; --以这样的形式显示具体数据:雇员编号是:姓名是:工资为:职位是:!select‘雇员编号是: ‘ || empno,
‘姓名是: ‘ || ename,
‘工资是: ‘ || sal,
‘职位是: ‘ || job || ‘ ! ‘from emp; --查询不是职位不是“CLERK”的员工信息(至少用2种方式查询)select * from emp where job != ‘CLERK‘;
select * from emp where job not like‘ % CLERK % ‘; --查询下员工姓名中有O和T的select * from emp where ename like‘ % O % ‘and ename like‘ % T % ‘; --将员工工资按照由高到低的顺序排列select sal from emp order by sal desc; --查询显示工资大于各个部门工资的平均值的员工的年龄select empno,
a.deptno,
a.sal,
b.deptno,
b.gsal,
round((sysdate - hiredate) / 365, 0)--年龄from emp a,
(select deptno, round(avg(sal), 0) as gsal from emp group by deptno) b--基表和视图表where a.deptno = b.deptno--主键连接基表和视图and a.sal > b.gsal; --工资大于各部门平均工资--查询各个部门工资范围,按照1000~2000,
2000~3000.。。。这样的格式显示人数--------------------------没看懂意思--要求查询出工资比SMITH工资要高的全部雇员信息select * from emp where sal > (select sal from emp where ename = ‘SMITH‘); --要求查询出高于公司平均工资的全部雇员信息select * from emp where sal > (select avg(sal) from emp); --查询出每个部门的编号、名称、位置、部门人数、平均工资select deptno,
avg(sal) from emp group by deptno; --统计各个部门的人数 * /
select deptno,count (*) from emp group by deptno;
select * from emp;
--1 选择部门30中的所有员工。
select ename from emp where deptno = ‘30‘;
--2 列出所有办事员(CLERK)的姓名,雇员编号和部门编号。
select ename,empno,deptno from emp where job=‘CLERK‘;
--3 找出奖金高于薪金的员工。
select ename from emp where comm>sal;
--4 找出奖金高于薪金60%的员工。
select ename from emp where comm>(sal*0.6);
--5 找出部门10中所有经理(MANAGER)
select * from emp where deptno = ‘10‘ and job = ‘MANAGER‘;
--6 找出部门10中所有经理(MANAGER),以及所有部门中即不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料。
select * from emp where (deptno=10 and job = ‘MANAGER‘) or (job not in(‘MANAGE‘,‘CLERK‘) and sal>=2000)
select * from emp;
--7 找出有奖金的员工的不同工作。
select distinct job from emp where comm>0;
--8 找出没有奖金或奖金低于100的员工。
select * from emp where (comm<100 or comm is not null);
--9 找出每个月倒数第3天受雇的所有员工。
select * from emp where hiredate=(last_day(hiredate)-2);
--10 找出早于30年前受雇的员工。
select * from emp where add_months(sysdate,-30*12)>=hiredate; --add_months(xxxx,+or-) 当前时间+或者减月份
--11 以首字母大写的方式显示所有员工的姓名。
select initcap(ename) from emp;
--12 显示正好为5个字符的员工的姓名。
select ename from emp where length(ename)=5;
--13 显示不带有‘R‘的员工的姓名。
select ename from emp where ename not like ‘%R%‘;
--14 显示所有员工姓名的前三个字符。
select substr(ename,3) from emp;
--15 显示所有员工的姓名,用‘L‘代替所有‘A‘
select replace (ename,‘L‘,‘A‘) from emp;
--16 显示满30年服务年限的员工的姓名和受雇日期。
select months_between(sysdate,hiredate)/12 from emp;
select ename,
hiredate from emp where months_between(sysdate, hiredate) / 12 >= 30; --17显示员工的详细资料,按姓名排序。select * from emp order by ename desc; --18显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面。select ename,
hiredate from emp order by hiredate; --19显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序。select ename,
job,
sal from emp order by job desc,
sal; --20显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。select ename,
to_char(hiredate, ‘yyyy‘)年份,
to_char(hiredate, ‘mm‘)月份from emp order by月份,
年份; ----------------------------------21显示在一个月为30天的情况所有员工的日薪金,忽略余数。select trunc(sal / 30) from emp; --22找出在(任何年份的)2月受聘的所有员工。select * from emp where to_char(hiredate, ‘mm‘) = 2; --23对于每个员工,显示其加入公司的天数。select ename,
sysdate - hiredate from emp; --24显示姓名字段的任何位置包含‘A‘的所有员工的姓名。select ename from emp where ename like‘ % A % ‘;
来源: http://www.bubuko.com/infodetail-2229948.html