`
daxiong921
  • 浏览: 44715 次
  • 性别: Icon_minigender_1
  • 来自: 龙岩
社区版块
存档分类
最新评论

Oracle第三天学习(group by)

阅读更多
1
group by

查询各个部门平均薪水
select avg(sal) from emp group by deptno;


将部门编号部门平均薪水一起查出来
select deptno,avg(sal) from emp group by deptno;


好了,现在我想将部门名字平均薪水一起查出来,这么做可以吗?
select d.dname,avg(e.sal) 平均薪水 from dept d,emp e 
where d.deptno = e.deptno
group by d.deptno;

这么做是查不出结果来的。而且会报这么个错误
不是 GROUP BY 表达式

为什么呢?
因为这时候其实是按照部门名称分组的
所以group by的时候添加一个部门名称就可以查出来了
select d.dname,avg(e.sal) 平均薪水 from dept d,emp e 
where d.deptno = e.deptno
group by d.deptno,d.dname;


2
having
现在,我想查询平均工资2000元以上的部门,怎么查呢?
select deptno,avg(sal) from emp 
where avg(sal) > 2000
group by deptno;

显示以下错误:
ERROR 位于第 1 行:
ORA-00934: 此处不允许使用分组函数


那么该如何写呢?这时候就需要用到 having关键词来替代where
having过滤的是 组条件,而 where 过滤的是单行条件
select deptno,avg(sal) from emp
group by deptno
having avg(sal) > 2000;

这么写才能得出 平均薪水 大于 2000 的部门
分享到:
评论

相关推荐

    Oracle中分组查询group by用法规则详解

    在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...

    group by的详解

    在Oracle数据库中,`GROUP BY`语句是用于将数据行根据一个或多个列的值进行分组,以便对每个组执行聚合函数(如`SUM`、`COUNT`、`AVG`等)。`GROUP BY`的主要作用在于将具有相同列值的数据归类到一起,从而可以对每...

    ORACLE第1天

    【标题】"ORACLE第1天"涉及到的是Oracle数据库的基础学习内容。Oracle是全球最流行的商业关系型数据库管理系统之一,广泛应用于大型企业级系统。在第一天的学习中,通常会涵盖Oracle的基本概念、安装配置以及初步的...

    Oracle入门学习文档toad

    第3章:数据操作 本章主要涉及INSERT、UPDATE、DELETE语句,用于在数据库中添加、修改和删除数据。同时可能涵盖事务管理(BEGIN, COMMIT, ROLLBACK)和并发控制(锁定机制)的概念。 第4章:表和视图 这一章会讲解...

    oracle 经典教程学习

    除此之外,还有Toad、PL/SQL Developer等第三方工具,提供了更丰富的功能和友好的用户界面。 **4. Oracle服务** Oracle服务是数据库运行的基础,包括监听器(Listener)服务,负责接收和转发数据库连接请求;数据库...

    ORACLE经典学习笔记

    ### ORACLE经典学习笔记知识点概览 #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过...

    oracle中使用group by优化distinct

    2. **使用`GROUP BY ROLLUP/CUBE/GROUPING SETS`**:这些高级`GROUP BY`技术可以组合不同的分组,以实现类似于`DISTINCT`的效果。例如,如果所有字段都需去重,可以使用`GROUP BY`加上所有字段,然后利用`ROLLUP`或`...

    Oracle数据库学习 06Days

    - 正范式:理解第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及BCNF。 - 数据库设计方法:ER模型、关系模型的转换,以及如何避免反范式设计。 9. **数据库维护** - 日志管理:redo logs和undo logs的...

    oracle基础学习pdf

    2. **第3章 限制数据和对数据排序** - 排序(ORDER BY):学习如何使用ORDER BY子句对查询结果进行升序或降序排列。 - 分页(LIMIT和OFFSET):理解如何分页显示数据,以提高数据检索效率和用户体验。 3. **第4章...

    Oracle实用教程(第五版)(Oracle11g版)

    第一范式(1NF)、第二范式(2NF)和第三范式(3NF)是通常遵循的范式,确保数据结构合理。 最后,了解Oracle数据库的备份与恢复策略是保障数据安全的关键。Oracle提供多种备份选项,如逻辑备份(导出/导入)、物理...

    Oracle高级sql学习与练习

    10. 增强GROUP BY功能,使用GROUP BY扩展选项,如GROUPING SETS、CUBE和ROLLUP等,可以实现更复杂的聚合计算。 11. 分析函数(ANALYTICAL FUNCTIONS)是Oracle SQL的高级特性之一,允许在数据集上进行窗口计算,...

    精通OracleSQL第2版.zip

    1. **SQL基础**:书中会详细阐述SQL的基本语法,如SELECT语句的使用,如何联接多个表,以及WHERE子句和GROUP BY子句的运用,帮助读者构建坚实的SQL基础。 2. **高级查询**:深入讲解子查询、集合操作、窗口函数、...

    Oracle学习文档

    根据提供的文档内容,我们可以归纳总结出以下几个重要的Oracle数据库学习知识点: ### 1. SQL 查询技巧 #### 1.1 统计每个部门员工的数量 - **语法**: `SELECT dept_id, COUNT(*) FROM s_emp GROUP BY dept_id;` -...

    oracle编程学习材料

    3. Toad:强大的第三方工具,提供了更丰富的功能和优化建议。 五、实战与项目经验 理论学习之余,实践是检验理解的最好方式。你可以尝试创建简单的数据库应用,比如学生管理系统、员工信息表等,通过实际操作来加深...

    oracle从入门到精通学习材料+常用函数

    - SQL高级特性:学习子查询、联接(JOIN)、分组(GROUP BY)和聚合函数(SUM, COUNT, AVG等)。 3. **PL/SQL编程**: - PL/SQL结构:了解块(BEGIN-END)、变量、流程控制(IF-THEN-ELSIF, LOOP, GOTO)等。 - ...

    Oracle第二次考试答案

    本次Oracle第二次考试涉及的知识点涵盖了数据库设计、SQL查询、事务管理等多个方面。以下是对这些知识点的详细解释: 1. **数据库设计**: - 用户svse的创建:`CREATE USER svse IDENTIFIED BY password;` - 表...

Global site tag (gtag.js) - Google Analytics