【发布时间】:2016-06-21 04:47:21
【问题描述】:
我无法产生这个问题的预期结果:
按字母顺序显示每个收入低于最高薪工会员工的员工的全名、工作、薪水、部门编号
- 加入工会的员工不是副总裁的经理总裁 不要在销售或营销部门工作
- 全名应显示为 Firstname Lastname,并且应具有标题 Employee。
- Salary 应该在左边用 = 符号填充,直到 12 个字符的宽度。它应该有一个别名 Salary。
- salary 被格式化为货币金额,包括。千位分隔符,但没有小数
- 将员工姓名的宽度限制为 25 个字符。
输出行应如下示例行:
Jonathon Taylor SA_REP ==== $8,600 80
到目前为止我的查询:
select last_name || ', ' || first_name "full name", job_id, salary, department_id
from employees
where salary < ANY
(SELECT MAX(salary)
from employees e join departments d
where e.job_id <> 'AC_MGR' OR 'AD_VP' OR 'AD_PRES'
AND d.department_name <> 'SALES' OR 'MARKETING'
GROUP BY department_id)
如果有人可以帮助我并指出如何获得正确输出的正确方向,那将不胜感激。谢谢!
【问题讨论】:
-
为什么要在最大子查询中分组?
-
ORs 周围的括号。实际上,该表达式甚至无效:您想要e.job not in ('AC_MGR', 'AD_VP', 'AD_PRES')。与department_name相同。并同意您也不需要GROUP BY。一旦您的子查询返回单行,ANY将不再需要。 -
ORA-00905:缺少关键字 00905. 00000 - “缺少关键字” *原因:*操作:第 6 行错误:15 列
-
我得到那个错误纠正你提到的内容