数据查询
(1) 基本数据查询
a) 分别查询表employees、regions、countries和locations表中的所有行和列
例:Select * from employees;
b) 创建一个查询,显示每个雇员的 last name, job_id, hire_date, 和 employee_id,employee_id显示在第一列, 给 HIRE_DATE 列指定一个别名 STARTDATE 。
Select employee_id,last_name,job_id,hire_date startdate from employees;
c) 创建一个查询从EMPLOYEES表中显示唯一的工作代码(job_id)
Select distinct job_id from employees;
d) 创建一个查询,显示收入超过 $12,000 的雇员的名字和薪水。
Select first_name,last_name,salary from employees where salary>12000;
e) 创建一个查询,显示雇员号为 176 的雇员的名字和部门号
Select first_name,last_name,department_id from employees
where employee_id=176;
f) 显示受雇日期在 1998年2月20日 和 1998年5月1日 之间的雇员的名字、岗位(job_id)和受雇日期(hire_date)。按受雇日期顺序排序查询结果。
Select first_name,last_name,job_id,hire_date
From employees
Where hire_date between ’20-2月-98’ and ‘1-5月-98’
Order by hire_date (desc);
g) 显示所有在部门 为20 和 50 的雇员的名字和部门号,并以名字按字母顺序排序。
Select first_name,last_name,department_id
From employees
Where department_id in(20,30)
Order by first_name;
h) 显示每一个在 1994 年受雇的雇员的名字和受雇日期
Select first_name,last_name,hire_date
From employees
Where hire_date like ‘%94’;
i) 对每一个雇员,显示 employee_id、last_name、salary 和 salary 增加 15%,并且表示成整数,列标签显示为 New Salary。
Select first_name,last_name, salary,round(salary*1.15,0) “New Salary”
From employees;
j) 显示所有没有主管经理的雇员的名字和工作岗位。
Select first_name,last_name, job_id
From employees
Where manager_id is null;
k) 显示所有名字中第三个字母是 a 的雇员的名字
Select first_name,last_name
From employees
Where first_name like ‘__a%’;
l) 显示所有名字中有一个 a 和一个 e 的雇员的名字。
Select first_name,last_name
From employees
Where first_name like ‘%a%’ and first_name like ‘%e%’;
m) 写一个查询显示当前日期,列标签显示为 Date。
Select sysdate “date” from dual;
n) 查询表employees的department_id列,department_id为10时显示为“计算机工程系”,为20时显示为“汽车工程系”,其它显示为“其它”,分别用case和decode实现。
Select department_id,case department_id when 10 then '计算机工程系'
When 20 then '汽车工程系'
Else '其它'
End
From employees;
Select department_id,
decode(department_id,10,'计算机工程系',20,'汽车工程系','其它')
From employees;
o) 查询表employees的salary列,如果salary小于3000显示为“低工资”,salary小于5000显示为“中”,其余显示为“高工资”
Select salary,case when salary<3000 then ‘低工资’
When salary<5000 then ‘中’
Else ‘高工资’ end from employees;
(2) 连接查询和子查询
a) 写一个查询显示所有雇员的 last_name、department_id、and department_name
Select e.last_name,d.department_id,d.department_name
From employees e,departments d
Where e.department_id=d.department_id;
b) 写一个查询显示所有有佣金(commission_pcct不为空)的雇员的 last_name、department_name、location_ID 和城市。
Select e.last_name,d.department_name,d.location_id,l.city
From employees e,departments d,locations l
Where e.department_id=d.department_id and d.location_id=l.location_id
And emission_pct is not null;
c) 写一个查询显示那些工作在 Toronto(城市名) 的所有雇员的 last_name、distinct查询job_title、department_id 和 department_name。
Select e.last_name,j.job_title,d.department_id,d.department_name
From employees e,departments d,locations l,jobs j
Where e.department_id=d.department_id and d.location_id=l.location_id
And e.job_id=j.job_id and l.city=’Toronto’;
d) 显示雇员的 last name 和 employee_id 连同他们的经理的 last name 和 manager_id。列标签分别为 Employee、Emp#、Manager 和 Mgr#。
Select a.last_name ployee_id Emp#,
b.last_name ployee_id Mgr#
From employees a,employees b
Where a.manager_ployee_id;
e) 创建一个查询显示那些在雇员 Davies 之后入本公司工作的雇员的name 和 hire_date。
Select first_name,last_name from employees
Where hire_date>(select hire_date from employees where last_name=’Davies’);
f) 显示所有雇员的最高、最低、合计和平均薪水,列标签分别为:Maximum、Minimum、Sum 和 Average。
Select max(salary) Maximum,min(salary) Minimum,
sum(salary) Sum ,avg(salary) Average
from employees;
g) 写一个查询显示每一工作岗位的人数。
Select job_id,count(*) from employees group by job_id;
h) 写一个查询显示最高和最低薪水之间的差。列标签是 DIFFERENCE。
Select max(salary)-min(salary) DIFFERENCE from employees;
i) 显示经理号和经理付给雇员的最低薪水。排除那些经理未知的人。排除最低薪水小于等于 $6,000 的组。按薪水降序排序输出。
Select manager_id,min(salary) from employees
Where manager_id is not null
Group by manager_id
Having min(salary)<=6000;
j) 创建一个查询显示雇员总数,和在 1995、1996、1997 和 1998受雇的雇员人数。创建适当的列标题。
Select count(*) total,
Sum(decode(to_char(hire_date,’YYYY’),’1995’,1,0)) “1995”,
Sum(decode(to_char(hire_date,’YYYY’),’1996’,1,0)) “1996”,
Sum(decode(to_char(hire_date,’YYYY’),’1997’,1,0)) “1997”,
Sum(decode(to_char(hire_date,’YYYY’),’1998’,1,0)) “1998”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论