精华内容
下载资源
问答
  • 主要介绍了oracle中使用group by优化distinct的相关资料,需要的朋友可以参考下
  • ORACLE GROUP BY

    千次阅读 2015-02-04 15:57:34
    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE ...

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
    合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

    语法
    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name

    例子1:查找每个客户的总金额

    SELECT Customer,SUM(OrderPrice) FROM Orders
    GROUP BY Customer;


    例子2:GROUP BY 一个以上的列

    SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
    GROUP BY Customer,OrderDate

    展开全文
  • 当我们刚开始学Oracle时,见到group by,常常会来个三连问:为什么要用group bygroup by应该怎么用?为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了...
  • Oracle group by用法介绍

    千次阅读 2016-09-24 17:36:50
    group by是分组函数。一般都是配合聚合函数使用的。介绍几个重要的知识点。select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面group by是分组函数,所以查询的数据都是基于这分组来说的。看例子...

    group by是分组函数。一般都是配合聚合函数使用的。介绍几个重要的知识点。

    select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

    group by是分组函数,所以查询的数据都是基于这分组来说的。看例子:

    A B
    1 abc
    1 bcd
    1 asdfg
    select A,B from table group by A
    你说这样查出来是什么结果,
    A B
    abc
    1 bcd
    asdfg
    右边3条如何变成一条,所以需要用到聚合函数,比如
    select A,count(B) 数量 from table group by A
    这样的结果就是
    A 数量
    1 3

    所以我们用到的分组函数的前提就是你想根据这分组计算什么,比如计算这组总的人数,平均数,最小数,最大数。

    但是不是说group by分组条件的字段都必须在查询条件中列出来。出现在group by中的字段可以不select出来,也就是说 select中的字段必须出现在group by中 group by中的分组条件不一定出现在select中。
    看到select A,count(B) 数量 from table group by A 这个语句我们表面印象应该是先计算count(B),再group,这牵扯到oracle语句执行机制,在这不多讲了(其实也不会)。我们要理解是,或者说记住的是group by执行顺序。这边oracle是先按照group by分组条件先进行分组,再进行count计算的。

    where, group by, having, order by语句的执行顺序

    查询中用到的关键词主要包含六个,并且他们的顺序依次为

    select–from–where–group by–having–order by
    其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行

    from–where–group by–having–select–order by,
    from:需要从哪个数据表检索数据
    where:过滤表中数据的条件
    group by:如何将上面过滤出的数据分组
    having:对上面已经分组的数据进行过滤的条件
    select:查看结果集中的哪个列,或列的计算结果
    order by :按照什么样的顺序来查看返回的数据

    可以看出select语句是先group by再进行select的,所以group by在count先计算。

    select CategoryName, count(*), AVG(Rating)  
    from BOOKSHELF  
    where Rating>1  
    group by CategoryName  
    having CategoryName like 'A%'  
    order by count(*) desc  

    1.基于Where Rating>1 筛选出符合条件的行;
    2.基于group by CategoryName 对筛选的结果进行分组;
    3.为每个CategoryName组计算Count(*)
    4. 基于having CategoryName like ‘A%’留下符合条件的组
    5. 根据order by 的条件对剩下的行组进行排序,SQL中的count(*)也是分组函数

    在介绍几个小的知识点
    group by 的顺序类似order by
    如 group by A,B,C,D责先按A分组 再按BCD这个顺序分组
    group by条件越多分组越细 也就是说 假如A是学校 B是学院 C是专业 D是班级 那最后group by的结果是按照有多少个不同的班级分组 按照最细致的分组

    from后面的表关联,是自右向左解析的
    而where条件的解析顺序是自下而上的。

    也就是说,在写SQL文的时候,尽量把数据量大的表放在最右边来进行关联,
    而把能筛选出大量数据的条件放在where语句的最下面。

    参考:http://blog.csdn.net/m53931422/article/details/41548147
    http://www.2cto.com/database/201304/204965.html

    展开全文
  • oracle分组group by

    万次阅读 2019-06-05 23:13:38
    在select列表中所有未包含在组函数中的列都应该包含在group by字句中 包含在group by字句中的列不必包含在select列表中 正确:select deptno avy(sal) from emp group by deptno;(每个部门的平均工资) 错误:...

    1、语法

    在select列表中所有未包含在组函数中的列都应该包含在group by字句中

    包含在group by字句中的列不必包含在select列表中

     

    正确:select deptno avy(sal) from emp group by deptno;(每个部门的平均工资)

    错误:select deptno,count(ename) from emp;

    2、多个列分组

    select deptno,job sum(sal)
    from emp
    group by deptno,job
    order by 1;

    先按照第一个列分组,如果相同,再按第二个分组,以此类推

    3、过滤分组数据

    where和having的区别:where后面不能使用多行行数

    当既可以使用where和having的时候,尽量使用where

     

    4、group by语句增强

    举例说明:

    (1)select deptno,job sum(sal) from emp group by deptno,job;

    (2)select deptno sum(sal) from emp group by deptno;

    (3)select sum(sal) from emp;

     

    (4)select deptno,job sum(sal) from emp group by rollup( deptno,job);

    (1)+(2)+(3)==(4)

    rollup()函数:

    group by rollup(a,b)

    ==

    group by a,b

    +

    group by a

    +

    没有group by

    作用:做报表

    设置格式:break on deptno skip 2

    取消格式:break on null

     

    select语句可以做加减运算,通过集合运算

    展开全文
  • oracle not a GROUP BY expression

    万次阅读 2018-10-30 01:03:28
    oracle 数据库查询时报 not a GROUP BY expression错误 解决办法:在select语句中的查询字段添加到group by后面可以解决

    oracle 数据库查询时报 not a GROUP BY expression错误
    解决办法:在select语句中的查询字段添加到group by后面可以解决

    展开全文
  • Oracle group by having

    2020-07-10 17:07:13
    SELECT NVL(F_PHONE,'-1') F_PHONE FROM T_ACTIVITY GROUP BY F_PHONE HAVING COUNT(*) >=3 预想结果: 1. 如果F_PHONE 为null 则显示字符-1; 2. 如果F_PHONE 不为null 则直接显示分组后满足...
  • Oraclegroup by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句 限制返回的...
  • oracle 优化GROUP BY

    千次阅读 2019-07-03 11:57:00
    提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多. 低效: SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT’ ...
  • oraclegroup by字符拼接

    千次阅读 2017-10-27 14:45:50
    字符拼接用逗号隔开select userid as userId,(LISTAGG(campusname,',') WITHIN group(order by campusname))as campusname from T_SYS_CAMPUS_user group by userid
  • select mo.organ_id orgId,--专员所属三级机构 mo.abbr_name orgName, md2.departid group2Id,--专员所属部 md2.departname group2Name, md3.departid group3Id,--专员所属组 md3.departname group3Name...
  • Oraclegroup by用法

    千次阅读 2019-08-18 14:46:32
    在select语句中可以使用groupby子句将行划分成较小的组,一旦...groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。 在带有groupby子句的查询语句中,在se...
  • Oraclegroup by及order by详解

    千次阅读 2018-12-28 11:06:47
    group by XXX :以XXX进行分组 order by YYY:以YYY进行排序 一,如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中, 且group by语句中不能使用别名否则出错。  注:在...
  • ORACLE Group by 总结

    千次阅读 2009-10-21 18:06:00
    许多人在刚开始使用GROUP BY语句的时候经常都会碰到一些错误。刚刚在网上看到一篇关于... ================================================================================== Oracle Group By 用法之 —— Hav
  • Oracle group by分组拼接字符串

    千次阅读 2019-04-30 11:04:17
    select wm_concat(id),depon from test_1 group by depon
  • oracle group by 优化

    万次阅读 2008-07-25 19:40:00
    oracle group by 如果没有索引,他会进行全表扫描,导致性能低下。提高性能注意两点: 1.通过筛选过后,再进行分组,也就是说尽量少用having,可以让他扫描较少数据。 2.建立索引 oracle group by 如果只有一个...
  • 8、Oraclegroup by用法

    千次阅读 2017-07-03 20:37:55
    本文来自: ... oracleGROUP BY的用法 问题: select item.itemnum,item.in1,item.in4,inventory.location from item,inventory where item.itemnum
  • 关于oracle中order bygroup by

    千次阅读 2018-01-25 16:02:53
    会一点数据库语言的都知道order by是排序,group by是分组,在进行统计数据的时候就会用到group by,没有在聚合函数里面的就必须在group by里,有时候order bygroup by是一起使用的,order by里面的字段必须来源于...
  • MySQL和Oracle使用group by的区别

    千次阅读 2017-10-23 15:25:33
    Oracle在使用group by时,查询字段必须是分组的依据或聚合函数。MySQL没有此限制,会自动取第一行。
  • Oracle Group by语句和递归查询总结

    千次阅读 2018-07-21 21:49:52
    一、Group By Rollup的使用方法 1、概念  在Group By 中使用Rollup产生常规分组汇总行以及分组小计:  2、举例   SELECT department_id ,job_id ,SUM(salary) FROM employees WHERE department_id <...
  • Oracle group by高级用法之rollup

    千次阅读 2014-03-19 16:22:38
    最近一直给项目组的开发人员... OracleGROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY
  • Oracle出现不是group by 表达式的原因

    万次阅读 2017-08-08 12:18:20
    Oracle不是group by 表达式的原因
  • Oracle group by 语句增强

    千次阅读 2016-10-23 20:14:18
    SELECT dept, job, SUM(salary) FROM emp GROUP BY dept, job; + SELECT dept, SUM(salary) FROM emp GROUP BY dept; + SELECT SUM(salary) FROM emp; 可以写成: SELECT dept, job, SUM(salary) FROM ...
  • oracle与mysql group by区别

    千次阅读 2017-09-21 16:49:57
    select id,name from table group by zuming :mysql可以实现 ...select id,name,zuming from table group by zuming :oracle实现方式 你的组名必须体现在查询的条件里(你连组名都没有查询 怎么可以用组名查询)
  • oracle报错:不是GROUP BY 表达式

    千次阅读 2017-06-16 09:39:35
    报错:不是GROUP BY 表达式 实例:selectsum(hwjz),rq fromJcChargeInfo where1=1groupbyrq orderbyjcchargecode desc 原因: 1、GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。 2、ORDER BY 的...
  • ORACLE GROUP BY 如何去重 小汇

    万次阅读 2010-12-17 14:34:00
    ORACLE GROUP BY 去重复数据
  • oracle group by 的各种用法

    万次阅读 2018-03-26 17:04:54
    1、group by group by 是分组函数,是把by后面的数据进行分组,如果后面是一个字段,就把一个字段当成一组,如果是两个字段就把两个字段当成一组,以此类推。 例如:select job,ename,sum(sal) from emp group by ...
  • oracle group by和having用法

    千次阅读 2013-08-29 22:59:33
    // 根据deptno 和 comm 分组 以此类推 group by 后面是要跟着的 select 中所有不是聚合函数的字段 否则会报错。 having 相当于where 与where的唯一区别是 当查询语句中 有 聚合函数 的时候 就不能用where 了 只能...
  • 今天有一个需求要使用group byoracle的的group by的用法是:select后面的字段要属于group by的字段,并且order by后面的字段也属于group by的字段里面。 但是我要select的字段多于group by的字段,怎么办呢? 1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,391
精华内容 60,156
关键字:

bygrouporacle