Oracle SQL技巧:提取日期元素与查询平均工资
需积分: 15 146 浏览量
更新于2024-08-15
收藏 707KB PPT 举报
"这篇文章主要介绍了如何在Oracle数据库中使用SQL语句从当前时间中抽取年、月、日,以及展示了几个实用的SQL查询示例,包括查询平均工资最低的部门、找出大于本部门平均工资的员工和统计各部门管理者的分布情况。"
在Oracle SQL中,我们可以使用`EXTRACT`函数来获取日期字段的特定部分,如年、月和日。在提供的示例中,`SYSDATE`是Oracle中的一个内置函数,它返回当前系统日期和时间。以下是如何使用`EXTRACT`函数从`SYSDATE`中抽取年、月、日:
```sql
SELECT EXTRACT(YEAR FROM SYSDATE) AS 年份 FROM DUAL;
SELECT EXTRACT(MONTH FROM SYSDATE) AS 月份 FROM DUAL;
SELECT EXTRACT(DAY FROM SYSDATE) AS 日份 FROM DUAL;
```
这些查询分别返回当前日期的年份、月份和日份。
接下来,我们来看一个查询平均工资最低的部门及其平均工资的例子:
```sql
SELECT a.deptno, a.avg_sal
FROM (SELECT d.deptno, AVG(e.sal) AS avg_sal
FROM dept d, emp e
WHERE d.deptno = e.deptno
GROUP BY d.deptno
ORDER BY avg_sal) a
WHERE ROWNUM = 1;
```
这个查询首先计算每个部门的平均工资,然后按平均工资升序排序,最后通过`ROWNUM = 1`选择平均工资最低的部门。
此外,查询大于本部门平均工资的员工有以下两种方法:
1. 将查询平均工资的子查询放在`WHERE`子句中:
```sql
SELECT e.ename, e.sal, e.deptno
FROM emp e
WHERE e.sal > (SELECT AVG(sal) FROM emp WHERE e.deptno = deptno);
```
2. 或者将子查询放在`FROM`子句中:
```sql
SELECT e1.ename, e1.sal, e1.deptno
FROM emp e1, (SELECT AVG(sal) AS avg_sal, deptno FROM emp GROUP BY deptno) e2
WHERE e1.sal > e2.avg_sal AND e1.deptno = e2.deptno;
```
这两个查询都是为了找出工资高于所在部门平均工资的员工,只是实现方式略有不同。
最后,我们来看如何查询各部门管理者的分布情况:
```sql
SELECT COUNT(DISTINCT mgr) AS 管理者数量, deptno
FROM emp
WHERE mgr IS NOT NULL
GROUP BY deptno;
```
这个查询统计了每个部门中不为空(即有管理者)的`mgr`字段的数量,展示了各部门管理者的分布。
以上就是Oracle SQL中关于日期提取、子查询以及聚合函数的运用,它们在实际数据库操作中非常常见且实用。通过这些技巧,你可以更有效地对数据进行分析和查询。
2019-07-29 上传
2018-10-12 上传
2016-02-17 上传
2013-05-07 上传
2023-03-27 上传
2009-09-30 上传
2019-01-03 上传
2009-08-26 上传
2010-11-27 上传
深井冰323
- 粉丝: 24
- 资源: 2万+
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析