(1) 查询雇用日期在今年的,或者工资在[1000,2000]之间的,或者员工姓名(last_name)以'Obama'打头的所有员工,列出这些员工的全部个人信息。

SELECT *
FROM EMPLOYEES
WHERE EXTRACT(YEAR FROM HiredDate) = EXTRACT(YEAR FROM SYSDATE)
    OR (Salary >= 1000 AND Salary <= 2000)
    OR LAST_NAME LIKE 'Obama%'

(2) 查询部门平均工资大于1800元的部门的所有员工,列出这些员工的全部个人信息。

SELECT E.*
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D ON E.Departmentid = D.Departmentid
WHERE D.Departmentid IN (
    SELECT Departmentid
    FROM EMPLOYEES
    GROUP BY Departmentid
    HAVING AVG(Salary) > 1800
)

(3) 查询个人工资高于其所在部门平均工资的员工,列出这些员工的全部个人信息及该员工工资高出部门平均工资百分比。

SELECT E.*, ROUND(((E.Salary - D.AvgSalary) / D.AvgSalary) * 100, 2) AS ExceedPercentage
FROM EMPLOYEES E
INNER JOIN (
    SELECT Departmentid, AVG(Salary) AS AvgSalary
    FROM EMPLOYEES
    GROUP BY Departmentid
) D ON E.Departmentid = D.Departmentid
WHERE E.Salary > D.AvgSalary

以上是针对给定EMPLOYEES表的三个查询的SQL语句,根据题目要求选择特定的员工并列出其个人信息。需要注意的是,对于第三个查询,使用了子查询来计算部门平均工资,并在主查询中进行比较和计算百分比。

注意:在实际应用中,为了提高查询性能,可能需要适当的索引和优化。

SQL 查询示例:EMPLOYEES 表的各种查询

原文地址: https://www.cveoy.top/t/topic/cfRc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录