如果不使用别名,可以直接使用表名加上通配符 * 选取所有列。以下是不使用别名的示例查询:

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

SELECT EMPLOYEES.*
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 EMPLOYEES.*
FROM EMPLOYEES
INNER JOIN DEPARTMENTS ON EMPLOYEES.Departmentid = DEPARTMENTS.Departmentid
WHERE DEPARTMENTS.Departmentid IN (
    SELECT Departmentid
    FROM EMPLOYEES
    GROUP BY Departmentid
    HAVING AVG(Salary) > 1800
)

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

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

在以上查询中,直接用表名 EMPLOYEES 代替了别名 E,以表示选取所有列。


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

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