sql - 选择 Oracle 中最年长和最年轻的员工
问题描述
我想选择工作场所中年龄最大和最年轻的员工。年龄最大的和最小的都是指他们的工作经历。我参考了以前的 SQL Server 问题并修改了我的代码如下,但我遇到了错误:
不合法的识别符。
我想知道对我更改代码有什么建议吗?
SELECT d.Dtable_name,
RANK() OVER(ORDER BY SUM(ROUND((SYSDATE - e.hire_date) / 365.24,0)) DESC) AS yrsexperience
FROM Dtable_department d
LEFT JOIN Etable_employee e
ON d.department_id=e.department_id
WHERE yrsexperience =(SELECT MAX(d.department_name) KEEP(DENSE_RANK FIRST ORDER BY SUM(ROUND((SYSDATE - e.hire_date) / 365.24,0)) DESC) AS yrsexperience) AS Oldest)FROM Etable_employee e)
OR yrsexperience =(SELECT
MIN(d.department_name) KEEP(DENSE_RANK LAST ORDER BY SUM(ROUND((SYSDATE - e.hire_date) / 365.24,0)) DESC) AS yrsexperience) AS Youngest
FROM Etable_employee e)
更新
我在参考下面的答案后编辑了代码,但它给了我错误:
在预期的地方找不到 FROM。
解决方案
您可以使用FIRST
和LAST
聚合函数。
SELECT MAX(name) KEEP(DENSE_RANK FIRST ORDER BY yrs_experience ) AS Youngest,
MAX(name) KEEP(DENSE_RANK LAST ORDER BY yrs_experience ) AS Oldest
FROM etable_employee;
推荐阅读
- php - 来自 php 服务器的推送通知不会发送到 ios
- javascript - Firebase Cloud Functions CORS 问题
- javascript - Fullcalendar js中的时区
- r - R:用于提取嵌套节点内容的 rvest 库
- codenameone - 有没有办法在CN1版本号中添加补丁版本
- docker - 如何编写 docker-compose.yml 以便我可以从 php 访问守护进程的容器?
- javascript - 如何对具有动态属性的数组进行排序?
- stripe-payments - Stripe:获取信用卡的最后 4 位数字
- python - 在 XPath 中按类和范围搜索
- android - 如何在 Android 设备上不生根访问文件