对Oracle中group语句的浅显理解

Oracle为我们设置了一个非常好的参考,那就是scott用户和其中的员工表。今天就从emp表入手,共同研究研究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行数据。这样的思路下,我们就可以明白,查询到的数据必须有分组的意义。

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1904949.html

(0)
上一篇 2025年2月22日 15:41:22
下一篇 2025年2月22日 15:41:39

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 获取Oracle SQL语句中绑定变量值的方法

    在诊断SQL的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到SQL语句当中,用原来的SQL构成select语句( 在诊断sql的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到sql语句当中,用…

    数据库 2025年2月23日
    300
  • Oracle使用select语句复制表

    Oracle使用select语句复制表,要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以 1.INSERT INTO SELECT语句 语句形式为:Insert into Ta…

    数据库 2025年2月22日
    200
  • Oracle中循环语句的触发器

    Oracle中循环语句–loop, 是plsql中最简单的循环语句,这种循环语句以loop开头,以end loop 结尾,这种循环至少会被执行一次,就 oracle中循环语句–loop 是plsql中最简单的循环语句…

    数据库 2025年2月22日
    200
  • Oracle中的分支语句

    Oracle中的分支语句,Oracle条件分支语句:pl/sql中提供了三种分支语句:if– then, if—then–else,if–then–ifesle,Oracle条 o…

    数据库 2025年2月22日
    300
  • Oracle查询语句中Case when的使用

    case when和decode函数用法有一些相似,只是decode是枚举函数,而case when则更加灵活,同时case when相当于一个特殊的只有两个枚 case when语句语法如下: case when  表达式  then v…

    数据库 2025年2月22日
    200
  • Oracle用户信息查询操作语句

    oracle用户信息查询操作语句dba_XXX 需要有权限才能查看,否则会报表和视图不存在的错误 1. 查询所有用户(username, tablespace 首页 → 数据库技术 背景: 阅读新闻 oracle用户信息查询操作语句 [日期…

    数据库 2025年2月22日
    300

发表回复

登录后才能评论