OCP Lab Practices for Lesson 3:Restricting and Sorting Data

四月的奥德赛 OCP 82 次浏览 没有评论

任务

人力资源部门需要您的帮助来创建一些查询。

1.由于预算问题,人事部门需要一个报告,以显示收入超过12,000美元的员工的姓氏和薪水。 将您的SQL语句另存为名为lab_03_01.sql的文件。 运行查询。

select last_name, salary

from employees

where salary > 12000;


2.打开一个新的SQL工作表。 创建一个报告,以显示员工编号176的姓氏和部门编号。运行查询

select last_name, department_id

from employees

where employee_id = 176;


3.人力资源部门需要找到高薪和低薪的员工。 修改lab_03_01.sql以显示其薪水在$ 5,000到$ 12,000之间的所有雇员的姓氏和薪水。 将您的SQL语句另存为lab_03_03.sql。

select last_name, salary

from employees

where salary not BETWEEN 5000 and 12000;


4.创建一个报告,以显示姓氏为Matos和Taylor的员工的姓氏,工作ID和雇用日期。 按雇用日期升序对查询进行排序。

SELECT last_name, job_id, hire_date

FROM employees

WHERE last_name IN (‘Matos’, ‘Taylor’)

ORDER BY hire_date;

或者

SELECT last_name, job_id, hire_date

FROM employees

WHERE last_name = ‘Matos’ or last_name = ‘Taylor’

ORDER BY hire_date;

(WHERE last_name = ‘Matos’ and last_name = ‘Taylor’ 这条语句就跑不出来结果,不知道为什么)


5.按名称升序显示部门20或50中所有雇员的姓氏和部门ID。

SELECT last_name, department_id

FROM employees

WHERE department_id = 20 or department_id = 50

ORDER BY last_name ASC;

或者

SELECT last_name, department_id

FROM employees

WHERE department_id IN (20, 50)

ORDER BY last_name ASC;


6.修改lab_03_03.sql以显示收入在$ 5,000到$ 12,000之间并且在部门20或50中的雇员的姓氏和薪水。分别在”雇员”和”月薪”列中标记。 再次将lab_03_03.sql保存为lab_03_06.sql。 在lab_03_06.sql中运行该语句。

SELECT last_name “Employee”, salary “Monthly Salary”

FROM employees

WHERE salary BETWEEN 5000 AND 12000 AND department_id IN (20, 50);


7.人力资源部门需要一个报告,其中显示2006年雇用的所有雇员的姓氏和雇用日期。

SELECT last_name, hire_date

FROM employees

WHERE hire_date >= ’01-JAN-06′ AND hire_date < ’01-JAN-07′;

这道题要注意是显示2006年雇佣的,不是显示2006年以后雇佣的,很容易搞混写成WHERE hire_date > ’01-JAN-06


8.创建一个报告以显示所有没有经理的员工的姓氏和职务。

SELECT last_name, job_id

FROM employees

WHERE manager_id IS NULL;


9.创建一个报告以显示所有获得佣金的雇员的姓氏,薪水和佣金。 按薪水和佣金的降序对数据进行排序。 使用ORDER BY子句中列的数字位置。

SELECT last_name, salary, commission_pct

FROM employees

WHERE commission_pct IS NOT NULL

ORDER BY 2 DESC, 3 DESC;


10.人力资源部门的成员希望您编写的查询具有更大的灵活性。 他们希望得到一个报告,该报告显示收入超过提示后用户指定的金额的员工的姓氏和薪水。 将此查询保存到名为lab_03_10.sql的文件中。 (您可以使用在任务1中创建的查询并对其进行修改。)如果在出现提示时输入12000,该报告将显示以下结果:


SELECT last_name, salary

FROM employees

WHERE salary > &sal_amt;

这里用了一个&符号,表示不会存储用户输入的值



11.人力资源部门希望基于经理来运行报告。 创建一个查询,提示用户输入经理ID,并为该经理的员工生成员工ID,姓氏,薪水和部门。 人力资源部门希望能够在选定的列上对报告进行排序。 您可以使用以下值测试数据:

manager _id = 103, sorted by last_name

manager_id = 201, sorted by salary

manager_id = 124, sorted by employee_id

 

SELECT employee_id, last_name, salary, department_id, manager_id

FROM employees

WHERE manager_id = &mgr_num

ORDER BY &order_col;

后面的答案上select 语句中没写manager_id,笔者是建议加上去的,因为可以显出出来,不然不知道。




12.显示所有员工的姓氏,其中名字的第三个字母为” a”。

SELECT last_name

FROM employees

WHERE last_name LIKE ‘__a%’;
请注意。这里的__a%是2条下划线


13.显示姓氏均带有” a”和” e”的所有雇员的姓氏。

SELECT last_name

FROM employees

WHERE last_name LIKE ‘%a%’ AND last_name LIKE ‘%e%’;

这边可能有歧义性,还有A和E开头的姓氏,但题目中的是小写a和小写e


14.显示所有其职务为销售代表或股票业务员且工资不等于$ 2,500,$ 3,500或$ 7,000的雇员的姓氏,职位和薪水。

SELECT last_name, job_id, salary

FROM employees

WHERE job_id IN (‘SA_REP’, ‘ST_CLERK’) AND salary NOT IN (2500, 3500, 7000);


15.修改lab_03_06.sql以显示所有佣金为20%的员工的姓氏,薪水和佣金。 再次将lab_03_06.sql保存为lab_03_15.sql。 在lab_03_15.sql中重新运行该语句。

SELECT last_name “Employee”, salary “Monthly Salary”,commission_pct

FROM employees

WHERE commission_pct = .20;


发表评论

Go