Oracle SQL技巧:提取日期元素与查询平均工资
需积分: 15 143 浏览量
更新于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中关于日期提取、子查询以及聚合函数的运用,它们在实际数据库操作中非常常见且实用。通过这些技巧,你可以更有效地对数据进行分析和查询。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2016-02-17 上传
2013-05-07 上传
2023-03-27 上传
2019-07-29 上传
2009-09-30 上传
2019-01-03 上传
深井冰323
- 粉丝: 24
- 资源: 2万+
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率