----------------------------第二章----------------------- --1.查询员工表中所有员工的信息。 SELECT * FROM employees;
--2.查询员工表中员工的员工号、姓名、每个员工涨工资100元以后的年工资(按12个月计算)。
SELECT employee_id,last_name,(100+salary)*12 FROM employees;
--3.查询员工first_name和last_name,要求结果显示为“姓last_name名first_name”格式。 SELECT '姓'||last_name||'名'||first_name 员工姓名 FROM employees;
--4.查询所有员工所从事的工作有哪些类型(要求去掉重复值)。 SELECT DISTINCT job_id FROM employees;
SELECT DISTINCT department_id,job_id FROM employees; ----------------------------第三章-------------------------- --1.查询last_name是Chen的员工的信息。 SELECT *
FROM employees
WHERE last_name='Chen';
--2.查询参加工作时间在1997-7-9之后,并且不从事IT_PROG工作的员工的信息。 SELECT *
FROM employees
WHERE hire_date>'09-7月-1997' AND job_id NOT IN ('IT_PROG');
SELECT * FROM employees WHERE hire_date>='9-7月-97' and job_id not like 'IT_PROG';
--3.查询员工last_name的第三个字母是a的员工的信息。 --(oracle中的模糊通配符是%,单字通配符_) SELECT *
FROM employees
WHERE last_name LIKE '__a%';
--4.查询除了10、20、110号部门以外的员工的信息。 SELECT *
FROM employees
WHERE department_id NOT IN (10,20,110);
--5.查询部门号为50号员工的信息,先按工资降序排序,再按姓名升序排序。 SELECT *
FROM employees
WHERE department_id=50
ORDER BY salary DESC,last_name;
SELECT * FROM employees WHERE department_id=50
order by salary desc,first_name asc,last_name ASC; --6.查询没有上级管理的员工(经理号为空)的信息。 SELECT *
FROM employees
WHERE manager_id IS NULL;
--7.查询员工表中工资大于等于4500并且部门为50或者60的员工的姓名(last_name), 工资,部门号。
SELECT last_name,salary,manager_id FROM employees
WHERE salary>=4500 AND department_id IN (50,60);
SELECT last_name,salary,department_id FROM employees WHERE salary>=4500 and department_id in (50,60) --------------------------------第四章---------------------
--1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。
select round(months_between(sysdate,to_date('2000-01-01','yyyy-mm-dd')),0) from dual; select round((sysdate - to_date('2000-01-01','yyyy-mm-dd'))/7) from dual; --2.查询员工last_name的第三个字母是a的员工的信息(使用2个函数)。 SELECT last_name,salary,job_id FROM employees
WHERE last_name LIKE '__a%';
SELECT last_name,salary,job_id FROM employees
WHERE substr(last_name,3,1)='a';
--3.使用trim函数将字符串?hello?、? Hello ?、?bllb?、? hello ?分别处理得到下列字符串ello、Hello、ll、hello。
SELECT TRIM('h' FROM 'hello') ello, TRIM(' ' FROM 'Hello') Hello, TRIM('b' FROM 'bllb') LL,
TRIM(' ' FROM 'hello ') AS HELLO FROM dual;
--4.将员工工资按如下格式显示:123,234.00 RMB
SELECT last_name,to_char(salary,'999,999.00')||'RMB' \FROM employees;
select employee_id ,
to_char(salary,'999,999,999,99.00L')as salary from employees
--5.查询员工的last_name及其经理(manager_id),要求对于没有经理的显示“No Manager”字符串。
SELECT last_name,nvl(to_char(manager_id),'No Manager') Manager FROM employees;
--6.将员工的参加工作日期按如下格式显示:月份/年份。
SELECT last_name,extract(MONTH FROM hire_date)||'/'||extract(YEAR FROM hire_date) FROM employees;
--注意:to_char方法可以这样用
select last_name,to_char(hire_date,'mm/yyyy')as hire_date from employees; --7.在employees表中查询出员工的工资,并计算应交税款: --如果工资小于1000,税率为0,
--如果工资大于等于1000并小于2000,税率为10%, --如果工资大于等于2000并小于3000,税率为15%, --如果工资大于等于3000,税率为20%。 SELECT last_name,salary, CASE (salary/1000) WHEN 0 THEN 0
WHEN 1 THEN salary*0.1 WHEN 2 THEN salary*0.15 ELSE salary*0.2 END TAX FROM employees;
--------------------------------第五章---------------------------
--1.查询员工的编号,姓名,以及部门名称(分别使用Oracle语法,自然连接,using子句,on子句)。
select employee_id,last_name,first_name,department_name from employees,departments
select employee_id,last_name,first_name,department_name from employees
natural join departments
select employee_id,last_name,first_name,department_name from employees join departments using(department_id)
SELECT e.employee_id,e.last_name,e.first_name ,d.department_name FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
--2.查询部门名称为Shipping的员工的编号、姓名及所从事的工作。 SELECT employee_id,last_name, job_title FROM employees e JOIN jobs j
ON e.job_id = j.job_id JOIN departments d
ON e.department_id=d.department_id WHERE department_name='Shipping';
--3.查询所有工资大于等于6000元的员工姓名及其直接领导人的姓名、工资。要求查询结果中在员工和直接领导人之间加入字符串“works for”。
select e1.last_name,e1.salary,e1.last_name ||' works for '|| e2.last_name work_for,e2.last_name,e2.salary
from employees e1,employees e2
where e1.manager_id=e2.employee_id and e1.salary>=6000 order by e1.salary;
--4.查询员工的编号,姓名,以及部门名称,包括没有员工的部门。 select employee_id,last_name,department_name from employees e,departments d
where e.department_id(+) = d.department_id
select employee_id,last_name,department_name from employees e
RIGHT OUTER JOIN departments d
ON e.department_id= d.department_id;
--5.查询员工的编号,姓名,以及部门名称,包括不属于任何部门的员工。 select employee_id,last_name,department_name FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id= d.department_id;
--6.显示比员工?Abel?参加工作时间晚的员工姓名,工资,参加工作时间。 select e1.last_name,e1.salary,e1.hire_date from employees e1,employees e2 where e1.hire_date>e2.hire_date and e2.last_name like 'Abel'; ----------------------------第六章----------------------
--1.查询各部门平均工资在8000元以上的部门名称及平均工资。 select d.department_name,avg(e.salary) from employees e,departments d
where e.department_id=d.department_id group by d.department_name having avg(e.salary)>8000;
--2.查询工作编号中不含有“SA_”字符串及平均工资在8000元以上的工作编号及平均工资,并按平均工资降序排序。 select j.job_id,avg(e.salary) from jobs j,employees e where j.job_id=e.job_id group by j.job_id
having j.job_id not like'SA_'and avg(e.salary)>8000 order by avg(e.salary) desc
--3.查询部门人数在4人以上的部门的部门名称及最低工资和最高工资。 select d.department_name,min(e.salary),max(e.salary) from employees e,departments d
where e.department_id=d.department_id group by d.department_name having count(e.employee_id)>4
--4.查询工作不为AD_PRES,工资的和大于等于25000的工作编号和每种工作工资的和。 select job_id,sum(salary) from employees group by job_id
having job_id not like'AD_PRES'and sum(salary)>=25000
--5.显示经理号码,这个经理所管理员工的最低工资,不包括经理号为空的,不包括最低工资小于3000的,按最低工资由高到低排序。 select manager_id,min(salary) from employees
group by manager_id
having manager_id is not null and min(salary)>3000 order by min(salary)desc
-----------------------第七章---------------------
--1.查询工资高于编号为113的员工工资,并且和102号员工从事相同工作的员工的编号、姓名及工资。
select employee_id,last_name,salary from employees
where salary>(select salary
from employees
where employee_id=113) and job_id=(select job_id
from employees
where employee_id=102) --2.工资最高的员工姓名和工资。 select last_name,salary from employees
WHERE salary in (SELECT Max(salary) FROM employees);
--3.查询部门最低工资高于100号部门最低工资的部门的编号、名称及部门最低工资。 select e.department_id,d.department_name,min(e.salary) from departments d ,employees e
where d.department_id=e.department_id
group by e.department_id,d.department_name having min(e.salary)>(select min(salary) from employees
where employees.department_id=100) order by e.department_id;
--4.查询员工工资为其部门最低工资的员工的编号和姓名及工资。 select e.employee_id,e.last_name
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库sql语句在线全文阅读。
相关推荐: