首页
学习
活动
专区
圈层
工具
发布

oracle基础|oracle分组的用法|oracle分组查询|group by的使用

目录 分组查询 概念 语法以及执行顺序 组函数 group by 子句 练习 having用法 练习 ---- 分组查询 概念 所谓组查询即将数据按照某列或者某些列相同的值进行分组,然后对该组的数据进行组函数运用...count([distinct] column | *) : count(*) : 统计表中所有的行数 count(column) : 返回所有非空行的行数 group by 子句 1.用来将表中的行划分成若干更小的组...2.出现在select子句中,但是没有出现在组函数中的列必须出现在group by子句中 3.出现在group by中的列不一定出现在select子句中。...4.group by子句中的列出现在select结果中,表意性比较强。...目标查询: 平均工资 from : s_emp 条件 : 各部门 ,职称相同。

6.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle多表查询、子查询实战练习

    (ename)和工资(sal) SELECT ENAME,SAL FROM EMP WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='KING'); 4.查询与姓名中包含字母...DENSE_RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC)RN FROM EMP) WHERE RN=1 ORDER BY DEPTNO; --使用IN子查询...ORDER BY DEPTNO; --测试上面的IN子查询BUG:发现10部门的NulluN也显示出来了,但其并非10部门最高工资,10部门最高工资为5000 INSERT INTO EMP(EMPNO...,部门的人数 思路:1.先查询JOB为CLERK的所有部门编号,将该子查询结果命名为A;2.再从EMP表查询与A查询中部门编号相同的员工所在的部门人数,这一步的查询结果命名为B;3.最后从EMP表、DEPT...(+)=E.MGR AND M.SAL>3000; 6.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料 SELECT E.

    1.7K10

    Oracle函数学习(单表查询和子查询)

    –单表查询: –当需要的数据在一张表中,考虑使用单表查询 –多表联合查询: –当需要查询的数据分布在多张表中,考虑使用多表联合 –子查询学习: –使用时机:当查询的筛选条件不明确时,考虑使用子查询...–单行子查询 –多行子查询 –单行子查询: –使用时机:筛选条件不明确需要执行一次查询,并且查询结果一个字段并值只有一个 –注意:where子句中允许出现查询语句,该查询语句称为子查询 –使用:select...内容 from 表名 where 字段名 比较运算符 子查询语句 –查询所有比雇员“CLARK”工资高的员工信息 select * from emp where sal>(select sal from...: --使用:子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实就是使用关键字 --关键字1:any 任意 --select 内容 from 表名 where 字段名...job='SALESMAN') --查询部门20中同部门10的雇员工作一样的雇员信息 select job from emp where deptno=10 select *from emp where

    1.1K20

    ThinkPHP5.1 子查询-使用 Group 获取每组最新数据

    背景 当前项目业务中, 需要以字段 account_id 分组,获取 "redbook_effect" 数据表中最新的数据记录集合 - 根据网上的经验描述,如果 group 和 order 一起使用...- 会先进行分组获取, - 再对得到的结果集进行排序 - 所以如此一来,得到的最终数据中,对应字段 "account_id" 的记录并非是最新的 ---- 解决方案:【使用子查询,先进行排序...,再分组】 参考文档 【ThinkPHP5 开发文档 —— 子查询】 【where,group by,having,order by 执行顺序和编写顺序】 处理源码如下: $where =...->order('id desc') ->where($where) ->buildSql(); //然后使用子查询构造新的查询...a ,否则会报错: "Every derived table must have its own alias" 总结: 因为在嵌套查询中,子查询的结果是作为一个派生表给上一级进行查询,所以子查询的结果必须有一个别名

    2.6K30

    Oracle性能优化-子查询到特殊问题

    精通包括Oracle、MySQL、informix等多种关系型数据库,有丰富的数据库架构设计开发经验。就职于宜信。...1、空值问题 首先值得关注的问题是,在NOT IN子查询中,如果子查询列有空值存在,则整个查询都不会有结果。这可能是跟主观逻辑上感觉不同,但数据库就是这样处理的。因此,在开发过程中,需要注意这一点。...第二个值得关注的是,在11g之前,如果主表和子表的对应列未同时有NOT NULL约束,或都未加IS NOT NULL限制,则Oracle会走FILTER。...当子查询表数据量巨大且索引情况不好(大量重复值等),则不宜使用产生对子查询的distinct检索而导致系统开支巨大的IN操作;反之当外部表数据量巨大(不受索引影响)而子查询表数据较少且索引良好时,不宜使用引起外部表全表扫描的...如果限制性强的条件在子查询,一般建议使用IN操作。如果限制性强的条件在主查询,则使用EXISTS操作。 2. NOT IN/EXISTS 在子查询中,NOT IN子句将执行一个内部的排序和合并。

    2K70

    子查询与子查询的分类(一)

    在 SQL 中,子查询是一个查询嵌套在另一个查询中的查询,也被称为内部查询。子查询可以用来创建更复杂的查询,从而实现更高级的数据检索和分析。...子查询的分类子查询可以根据其位置和返回结果的数量和数据类型分为以下三种类型:标量子查询:返回一个单一值的查询,通常用于作为 WHERE 子句或 SELECT 子句中的表达式。...子查询 (SELECT AVG(salary) FROM employees) 返回平均工资,然后在 WHERE 子句中将其与员工的薪资进行比较。...子查询 (SELECT category_id FROM categories WHERE category_name = 'Electronics') 返回电子类别的 ID,然后在 WHERE 子句中将其与产品表中的产品类别...表子查询:返回一个表格作为查询结果的查询,通常用于 FROM 子句中的表达式。

    2.5K50

    子查询与子查询的分类(二)

    使用子查询子查询可以嵌套在 SELECT、FROM、WHERE 和 HAVING 子句中,以实现更复杂的数据检索和分析。...在使用子查询时,需要注意以下几点:子查询必须始终放在括号中;子查询可以是标量、列或表子查询;子查询可以使用运算符、聚合函数和其他 SQL 语句;子查询的结果必须与主查询的数据类型兼容。...以下是一些常见的子查询用法示例:在 WHERE 子句中使用子查询SELECT customer_name, credit_limitFROM customersWHERE customer_id IN...(SELECT customer_id FROM orders WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31');在这个例子中,子查询 (SELECT...子查询 (SELECT AVG(product_price) FROM products) 返回产品表中的平均价格,然后将其与每个类别的平均价格进行比较,并将结果过滤为只包含平均价格高于产品表平均价格的类别

    2.2K10

    mysql中select子查(select中的select子查询)询探索

    它的执行过程如下: 1. 从emp表中查询员工编号为1的员工记录。 2. 对于查询结果中的每一条记录,都会执行一个子查询,查询该员工所在的部门名称。...这个子查询使用了dept表,通过员工表和部门表的deptno字段关联,查询出员工所在部门的名称。由于是子查询,所以需要在执行每一个子查询的时候都扫描一遍dept表,效率相对较低。 3....在执行子查询的时候,子查询中的e.deptno是来自于主查询中的emp表,是通过where条件过滤出来的,所以子查询中的e.deptno是一个固定的值。...子查询的结果会作为一个临时表,与主查询中的emp表进行连接查询,最终得到员工姓名和部门名称的查询结果。...到这里对于select子查询的执行顺序更迷惑了,不知道DEPENDENT SUBQUERY到底时怎么执行的,到底有没有生产临时表,但是可以明确这种子查询的效率不如join好 注意事项 在select子查询中

    1.3K00

    Oracle 中的树查询和 connect by

    Oracle 中的树查询和 connect by 使用 connect by 和 start with 来建立类似于树的报表并不难,只要遵循以下基本原则即可: 使用 connect by 时各子句的顺序应为...: select from where start with connect by order by prior 使报表的顺序为从根到叶(如果 prior 列是父辈)或从叶到根(如果 prior 列是后代...where 子句可以从树中排除个体,但不排除它们的子孙(或者祖先,如果 prior 列是后代)。...connect by 中的条件(尤其是不等于)消除个体和它所有的子孙(或祖先,依赖于怎样跟踪树)。 connect by 不能与 where 子句中的表连接在一起使用。 下面是几个例子 1....排除个体,但不排除它们的子孙 SELECT n_parendid, n_name, (LEVEL - 1), n_id FROM navigation WHERE n_parendid IS NOT NULL

    1.5K70

    oracle中如何优雅的递归查询

    一条sql怎么查出单表中含有父子关系的数据呢?...tab.name, '\' ) FROM tab WHERE LEVEL = 3 CONNECT BY PRIOR tab.id = tab.parid image.png 还有其他更优雅的写法吗...,需要注意的是如果with后面的值是子节点那么求出的就是他的父节点和祖宗节点,如果是父节点那么求出的就是他的子节点和子孙节点,如果不懂可以把上面start with 后面的条件改成 p.parent=0...关键词prior,prior跟它右边的父节点放在一起(prior p.parent)表示往父节点方向遍历, 反之,如果 prior跟子节点放在一起(prior p.id)表示往叶子方向遍历。...这里需要注意的 =p.id 放在prior关键词的前面或者后面都没什么关系,也就是上面可以这样写 p.id= prior p.paren。重要的是prior旁边放的

    11.1K62

    Oracle子查询相关内容(包含TOP-N查询和分页查询)

    本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一、子查询 1、概念:嵌入在一个查询中的另一个查询语句,也就是说一个查询作为另一个查询的条件...2、分类:(1)单行子查询:查询结果只返回一行数据       (2)多行子查询:查询结果返回多行数据,多行子查询的操作符有IN,ALL,ANY,具体用法实例中说明。...二、oracle中TOP-N查询: 概念:用于获取一个查询中的前N条记录,需要借助rownum伪列来实现,rownum伪列,oracle为每个查询自动生成的伪列,物理上并不存在,查询中经常涉及多个表,但每个查询只有一列伪列...是因为oracle中对select查询语句的执行顺序是先where条件后order by排序,也就是说先取了5行在对这5行进行排序,而正确的顺序应该是所有20,30部门的员工工资先进行排序在取5行  三...、Oracle分页查询的应用:  概念:分页查询,顾名思义,控制查询结果的范围,得到我们想要的部分数据。

    1.3K20
    领券