`
哇哈哈852
  • 浏览: 91649 次
文章分类
社区版块
存档分类
最新评论

对Oracle中group语句的浅显理解

阅读更多


Oracle为我们设置了一个非常好的参考,那就是scott用户和其中的员工表。今天就从emp表入手,共同研究研究group分组的用法。


SQL> select * from emp
  2  ;

EMPNO ENAME      JOB        MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
  7369 SMITH      CLERK      7902 1980-12-17    800.00              20
  7499 ALLEN      SALESMAN  7698 1981-2-20    1600.00    300.00    30
  7521 WARD      SALESMAN  7698 1981-2-22    1250.00    500.00    30
  7566 JONES      MANAGER    7839 1981-4-2      2975.00              20
  7654 MARTIN    SALESMAN  7698 1981-9-28    1250.00  1400.00    30
  7698 BLAKE      MANAGER    7839 1981-5-1      2850.00              30
  7782 CLARK      MANAGER    7839 1981-6-9      2450.00              10
  7788 SCOTT      ANALYST    7566 1987-4-19    3000.00              20
  7839 KING      PRESIDENT      1981-11-17    5000.00              10
  7844 TURNER    SALESMAN  7698 1981-9-8      1500.00      0.00    30
  7876 ADAMS      CLERK      7788 1987-5-23    1100.00              20
  7900 JAMES      CLERK      7698 1981-12-3      950.00              30
  7902 FORD      ANALYST    7566 1981-12-3    3000.00              20
  7934 MILLER    CLERK      7782 1982-1-23    1300.00              10

14 rows selected

这里我们先对group by 函数进行少许的测试。SQL>
SQL> select deptno from emp;

DEPTNO
------
    20
    30
    30
    20
    30
    30
    10
    20
    10
    30
    20
    30
    20
    10

14 rows selected

SQL>
SQL>
SQL> select deptno from emp group by deptno;

DEPTNO
------
    30
    20
    10

SQL>
SQL> select job from emp group by job;

JOB
---------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST

SQL> select deptno,job from emp
  2  group by deptno,job;

DEPTNO JOB
------ ---------
    20 CLERK
    30 SALESMAN
    20 MANAGER
    30 CLERK
    10 PRESIDENT
    30 MANAGER
    10 CLERK
    10 MANAGER
    20 ANALYST

9 rows selected

从道理上来讲,(1式)select detpno from emp; 该语句的意思是找到emp 这张表,但是只显示detpno这个列,所以,结果集全是表中原封不动的数据,但是只不过隐藏了一些列而已。但是加入group by语句之后,即(2式)elect deptno from emp group by deptno; 同样是找到emp这张表,同样是列出detpno这个列,出结果后再被group by 即对1式进行了后续操作,操作便是对1式的结果集按deptno进行分组,分组的结果是取消了很多重复的数据。用这样的思路,select job ,deptno from emp gorup by job ,deptno。意味着先从emp中找到job 和 deptno列。如图,找到14行数据,之后按job和deptno进行分组。即意味着 以 {job,deptno} 的二元关系进行匹配。这样便会取消几个2元关系完全一样的数据,所以出现了9行数据。这样的思路下,我们就可以明白,查询到的数据必须有分组的意义。
  • 大小: 32.8 KB
分享到:
评论

相关推荐

    Oracle导出INSERT语句

    在数据库管理中,有时我们需要将数据从一个环境迁移到另一个环境,或者备份某些表的数据,这时“Oracle导出INSERT语句”的工具就显得非常实用。 这个小工具的核心功能是将Oracle数据库中的数据转换为一系列的INSERT...

    Oracle数据库sql语句 跟踪器

    在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA(数据库管理员)和开发人员识别性能瓶颈,改善查询效率,并确保系统的稳定运行。 SQL Monitor通过收集和展示SQL语句...

    oracle 中SQL语句优化

    oracle中SQL语句优化

    Oracle经典SQL语句

    ORACLE经典语句汇总 -- 字符串左填充和右填充,默认填充空格 -- 产生1~99行数据,少于一位则补0 -- 刪除相同行 -- 随机数 -- 产生业务流水号 -- 查询某张表中有哪些字段 -- 自循环表中 由叶子节点查父节点 -- 查子...

    Oracle导出INSERT语句V1.1

    首先,我们来理解一下INSERT语句在SQL中的作用。INSERT语句是用来向数据库表中插入新记录的基本SQL命令。它的基本格式如下: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` Oracle导出...

    oracle的SQL语句的一些经验总结

    以下是对"Oracle的SQL语句的一些经验总结"中可能涉及的关键知识点的详细阐述: 1. **基本查询**:SQL的基础是SELECT语句,用于从表中提取数据。例如,`SELECT column1, column2 FROM table_name;`用于获取指定列的...

    Oracle Sql语句转换成Mysql Sql语句

    在使用这个工具时,开发者需要确保源代码中的SQL语句是标准的Oracle SQL格式,避免使用特定Oracle数据库的特性,以提高转换的成功率。同时,转换后还需要对生成的MySQL SQL进行测试,确保在目标数据库环境中能正常...

    压测Oracle的SQL语句的性能情况

    本文将深入探讨如何利用压力测试工具来评估和优化Oracle数据库中的SQL语句性能。 标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure ...

    oracle查询死锁语句

    oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!

    常用oracle查询语句

    这条语句可以捕捉 Oracle 数据库中运行时间很久的 SQL 语句,结果显示用户名、会话 ID、操作名称、进度、剩余时间和 SQL 语句文本。 11. 查看数据表的参数信息 SELECT partition_name, high_value, high_value_...

    oracle导出ddl语句 表 所有 过程 包

    oracle导出ddl语句 表 所有 过程 包

    自己整理的Oracle常用高级语句.rar

    Oracle数据库是全球广泛使用的大型关系型...通过学习这些文档,你可以深入理解Oracle数据库的高级特性,并提升在实际工作中处理复杂查询和编程的能力。对于数据库管理员和开发人员来说,这些都是非常实用的知识点。

    Oracle中的控制语句

    Oracle中的控制语句

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    ORACLE数据库SQL语句美化器

    对ORACLE-SQL进行一些布局优化,更新它的格式

    oracle系列教程三+oracle复杂SQL语句.doc

    本文将深入探讨Oracle中的复杂SQL语句,包括查询优化、索引、函数的使用以及如何进行行列转换和去重操作。 首先,了解SQL语句的执行顺序至关重要。在一般的查询中,如`SELECT`、`FROM`、`WHERE`,执行顺序为:先...

    oracle中的SQL语句

    oracle中的SQL语句,其中的所有的SQL能干帮助大家更加容易的学习ORACLE。

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    oracle常用查询语句示例

    本篇文章将基于"oracle常用查询语句示例"这一主题,深入探讨在Oracle中执行多表查询和单表中复杂查询的方法。 首先,我们来看单表查询。在Oracle中,基础的SELECT语句用于从单个表中检索数据。例如: ```sql ...

Global site tag (gtag.js) - Google Analytics