oracle之单行函数之子查询之课后练习
生活随笔
收集整理的這篇文章主要介紹了
oracle之单行函数之子查询之课后练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*************************************************************************************************/
40. 誰的工資比 Abel 高?1). 寫兩條 SQL 語句.SELECT salaryFROM employeesWHERE last_name = 'Abel'--返回值為 11000SELECT last_name, salaryFROM employeesWHERE salary > 110002). 使用子查詢 -- 一條 SQL 語句SELECT last_name, salaryFROM employeesWHERE salary > (SELECT salaryFROM employeesWHERE last_name = 'Abel')子查詢注意: 1). 子查詢要包含在括號內2). 將子查詢放在比較條件的右側 41. 查詢工資最低的員工信息: last_name, salary 42. 查詢平均工資最低的部門信息43*. 查詢平均工資最低的部門信息和該部門的平均工資44. 查詢平均工資最高的 job 信息45. 查詢平均工資高于公司平均工資的部門有哪些?46. 查詢出公司中所有 manager 的詳細信息.47. 各個部門中 最高工資中最低的那個部門的 最低工資是多少48. 查詢平均工資最高的部門的 manager 的詳細信息: last_name, department_id, email, salary49. 查詢 1999 年來公司的人所有員工的最高工資的那個員工的信息./*************************************************************************************************/41. 查詢工資最低的員工信息: last_name, salary SELECT last_name, salaryFROM employeesWHERE salary = (SELECT min(salary)FROM employees)42. 查詢平均工資最低的部門信息SELECT *FROM departmentsWHERE department_id = (SELECT department_idFROM employeesGROUP BY department_id HAVING avg(salary) = (SELECT min(avg(salary))FROM employeesGROUP BY department_id) )43. 查詢平均工資最低的部門信息和該部門的平均工資select d.*, (select avg(salary) from employees where department_id = d.department_id)
from departments d
where d.department_id = (SELECT department_idFROM employeesGROUP BY department_id HAVING avg(salary) = (SELECT min(avg(salary))FROM employeesGROUP BY department_id) )44. 查詢平均工資最高的 job 信息1). 按 job_id 分組, 查詢最高的平均工資 SELECT max(avg(salary))FROM employeesGROUP BY job_id2). 查詢出平均工資等于 1) 的 job_idSELECT job_idFROM employeesGROUP BY job_idHAVING avg(salary) = (SELECT max(avg(salary))FROM employeesGROUP BY job_id)3). 查詢出 2) 對應的 job 信息SELECT *FROM jobsWHERE job_id = (SELECT job_idFROM employeesGROUP BY job_idHAVING avg(salary) = (SELECT max(avg(salary))FROM employeesGROUP BY job_id))45. 查詢平均工資高于公司平均工資的部門有哪些?1). 查詢出公司的平均工資SELECT avg(salary)FROM employees2). 查詢平均工資高于 1) 的部門 IDSELECT department_idFROM employeesGROUP BY department_idHAVING avg(salary) > (SELECT avg(salary)FROM employees)46. 查詢出公司中所有 manager 的詳細信息.1). 查詢出所有的 manager_idSELECT distinct manager_idFROM employeess2). 查詢出 employee_id 為 1) 查詢結果的那些員工的信息SELECT employee_id, last_nameFROM employeesWHERE employee_id in (SELECT distinct manager_idFROM employees)47. 各個部門中 最高工資中最低的那個部門的 最低工資是多少1). 查詢出各個部門的最高工資SELECT max(salary)FROM employeesGROUP BY department_id2). 查詢出 1) 對應的查詢結果的最低值: 各個部門中最低的最高工資(無法查詢對應的 department_id)SELECT min(max(salary))FROM employeesGROUP BY department_id3). 查詢出 2) 所對應的部門 id 是多少: 各個部門中最高工資等于 2) 的那個部門的 idSELECT department_idFROM employeesGROUP BY department_id HAVING max(salary) = (SELECT min(max(salary))FROM employeesGROUP BY department_id)4). 查詢出 3) 所在部門的最低工資SELECT min(salary)FROM employeesWHERE department_id = (SELECT department_idFROM employeesGROUP BY department_id HAVING max(salary) = (SELECT min(max(salary))FROM employeesGROUP BY department_id) )48. 查詢平均工資最高的部門的 manager 的詳細信息: last_name, department_id, email, salary1). 各個部門中, 查詢平均工資最高的平均工資是多少SELECT max(avg(salary))FROM employeesGROUP BY department_id2). 各個部門中, 平均工資等于 1) 的那個部門的部門號是多少SELECT department_idFROM employeesGROUP BY department_idHAVING avg(salary) = (SELECT max(avg(salary))FROM employeesGROUP BY department_id)3). 查詢出 2) 對應的部門的 manager_idSELECT manager_idFROM departmentsWHERE department_id = (SELECT department_idFROM employeesGROUP BY department_idHAVING avg(salary) = (SELECT max(avg(salary))FROM employeesGROUP BY department_id) )4). 查詢出 employee_id 為 3) 查詢的 manager_id 的員工的 last_name, department_id, email, salarySELECT last_name, department_id, email, salaryFROM employeesWHERE employee_id = (SELECT manager_idFROM departmentsWHERE department_id = (SELECT department_idFROM employeesGROUP BY department_idHAVING avg(salary) = (SELECT max(avg(salary))FROM employeesGROUP BY department_id) ) )49. 查詢 1999 年來公司的人所有員工的最高工資的那個員工的信息.1). 查詢出 1999 年來公司的所有的員工的 salarySELECT salaryFROM employeesWHERE to_char(hire_date, 'yyyy') = '1999'2). 查詢出 1) 對應的結果的最大值SELECT max(salary)FROM employeesWHERE to_char(hire_date, 'yyyy') = '1999'3). 查詢工資等于 2) 對應的結果且 1999 年入職的員工信息 SELECT *FROM employeesWHERE to_char(hire_date, 'yyyy') = '1999' AND salary = (SELECT max(salary)FROM employeesWHERE to_char(hire_date, 'yyyy') = '1999')50. 多行子查詢的 any 和 allselect department_idfrom employeesgroup by department_idhaving avg(salary) >= any(--所有部門的平均工資select avg(salary)from employeesgroup by department_id)any 和任意一個值比較, 所以其條件最為寬松, 所以實際上只需和平均工資最低的比較, 返回所有值
而 all 是和全部的值比較, 條件最為苛刻, 所以實際上返回的只需和平均工資最高的比較, 所以返回
平均工資最高的 department_id
?
總結
以上是生活随笔為你收集整理的oracle之单行函数之子查询之课后练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动通信原理、技术与系统——概述
- 下一篇: Word2013实战技巧