精华内容
下载资源
问答
  • GROUP BY 用法

    千次阅读 2013-06-16 11:58:35
    GROUP BY 子句:  GROUP BY (EXPRESSION)  你可以用group by 子句把表分成更小的组。这个子句有些要注意的地方: 1.在selelct 列表中的任何列或表达式,它们都必须出现在group by子句中或者是group function中...

      GROUP BY 子句:  

             GROUP BY (EXPRESSION)

           你可以用group by 子句把表分成更小的组。这个子句有些要注意的地方:

    1.在selelct 列表中的任何列或表达式,它们都必须出现在group by子句中或者是group function中,但是group by子句中可以出现非select列表中的列或表达式。


    select 列表中的列都在group by子句和group function中,所以成功执行。

    SQL> select department_id,avg(salary)  from  employees

      2  group  by department_id

      3  order by  department_id;

    DEPARTMENT_ID AVG(SALARY)

    ------------- -  ----------

               10        4400

               20        9500

               30        4150

               40        6500

               50  3475.55556

               60        5760

               70       10000

               80  8955.88235

               90  19333.3333

              100  8601.33333

              110       10154

    DEPARTMENT_ID AVG(SALARY)

    ------------- -----------

                         7000

    12 rows selected.


    没有将job_id列放在group by子句或group function中,所以执行失败。

    SQL> select   department_id, job_id,avg(salary)  from  employees

      2  group by department_id;

    select   department_id, job_id,avg(salary)  from  employees

                            *

    ERROR at line 1:

    ORA-00979: not a GROUP BY expression


    在group  by 子句中可以有非select列表中的列,所以执行成功。

    SQL> select avg(salary)  from employees  group  by  department_id;

    AVG(SALARY)

    -----------

     8601.33333

           4150

           7000

           9500

          10000

     19333.3333

          10154

     3475.55556

           6500

     8955.88235

           4400

    AVG(SALARY)

    -----------

           5760

    12 rows selected.



    2.在where子句中不可以使用别名,同样在group by 子句中也不可以使用。order by 子句中可以使用别名。

    SQL> select department_id  as DD,avg(salary)  from employees 

      2  group by DD;

    group by DD

             *

    ERROR at line 2:

    ORA-00904: "DD": invalid identifier

    这是为什么?主要是执行顺序的原因:

    SQL Select语句完整的执行顺序: 
    1、from子句组装来自不同数据源的数据;
    2、where子句基于指定的条件对记录行进行筛选;
    3、group by子句将数据划分为多个分组;
    4、使用聚集函数进行计算;
    5、使用having子句筛选分组;
    6、计算所有的表达式;
    7、select 的字段;
    8、使用order by对结果集进行排序。
    SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT。SQL查询处理的步骤序号:
    (8) 
    1 SELECT  (9) DISTINCT (11) <TOP_specification> <select_list> 
    2  (1)  FROM <left_table>  
    3  (3) <join_type> JOIN <right_table> 
    4  (2) ON <join_condition> 
    5  (4) WHERE <where_condition> 
    6  (5) GROUP BY <group_by_list> 
    7  (6) WITH {CUBE | ROLLUP} 
    8  (7) HAVING <having_condition> 
    9 (10) ORDER BY <order_by_list>
      以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。



    3.按多列分组

    对GROUP BY 子句的强大扩充就是使用多个分组特性。Oracle允许将数据集划分为多组,并且允许使用不同的分组特性将这些组进一步划分成子组。


    SQL> select department_id,job_id,sum(salary)  from  employees

      2  group  by department_id,job_id

      3  order by department_id;

    DEPARTMENT_ID JOB_ID     SUM(SALARY)

    ------------- ---------- -----------

               10 AD_ASST           4400

               20 MK_MAN           13000

               20 MK_REP            6000

               30 PU_CLERK         13900

               30 PU_MAN           11000

               40 HR_REP            6500

               50 SH_CLERK         64300

               50 ST_CLERK         55700

               50 ST_MAN           36400

               60 IT_PROG          28800

               70 PR_REP           10000

    DEPARTMENT_ID JOB_ID     SUM(SALARY)

    ------------- ---------- -----------

               80 SA_MAN           61000

               80 SA_REP          243500

               90 AD_PRES          24000

               90 AD_VP            34000

              100 FI_ACCOUNT       39600

              100 FI_MGR           12008

              110 AC_ACCOUNT        8300

              110 AC_MGR           12008

                  SA_REP            7000

    20 rows selected.

    先是用department_id进行分组,然后再在这个分组的基础上用job_id分组,划分更小的组。
    展开全文
  • MYSQL GROUP BY用法详解

    2020-09-09 23:28:46
    主要为大家详细介绍了MYSQL GROUP BY用法,具有一定的实用性和参考价值,感兴趣的小伙伴们可以参考一下
  • oracle group by用法.pdf

    2021-09-14 13:13:37
    oracle group by用法.pdf
  • group by用法.doc

    2010-09-08 13:17:24
    group by用法.docgroup by用法.doc
  • Linq Grouping GroupBy 用法详解 Linq Grouping GroupBy 用法详解
  • Oracle中group by用法

    2019-09-20 11:39:00
    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句 限制返回的结果...

    Oracle中group by用法

    在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。

    使用having子句 限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

    在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 select max(sal),job emp group by job; (注意max(sal),job的job并非一定要出现,但有意义) 查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。 select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno; 当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件 where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。
    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

    使用order by排序时order by子句置于group by 之后 并且 order by 子句的排序标准不能出现在select查询之外的列。

    查询每个部门的每种职位的雇员数
    select deptno,job,count(*) from emp group by deptno,job

    /****************************************************************

    记住这就行了:

    在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。)

    展开全文
  • group by 使用方法

    千次阅读 2010-06-10 09:30:00
    select t.tablespace_name, round ( sum(bytes/1024/1024),2 ) total_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by ...

    實例:檢索每個表空間的大小。

    select t.tablespace_name,
    round (  sum(bytes/1024/1024),2  )

    total_size
    from dba_tablespaces t, dba_data_files d where t.tablespace_name =
    d.tablespace_name
    group by t.tablespace_name;

     

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

       在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

       select max(sal),job emp group by job;
        (注意max(sal),job的job并非一定要出现,但有意义)

        查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

      select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

      当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件

       where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
       having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

      查询每个部门的每种职位的雇员数
      select deptno,job,count(*) from emp group by deptno,job;

    展开全文
  • group by 用法解析

    万次阅读 2018-08-01 01:33:56
    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 ...

    group by 用法解析
    group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
    SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
    某个员工信息表结构和数据如下:
    id name dept salary edlevel hiredate
    1 张三 开发部 2000 3 2009-10-11
    2 李四 开发部 2500 3 2009-10-01
    3 王五 设计部 2600 5 2010-10-02
    4 王六 设计部 2300 4 2010-10-03
    5 马七 设计部 2100 4 2010-10-06
    6 赵八 销售部 3000 5 2010-10-05
    7 钱九 销售部 3100 7 2010-10-07
    8 孙十 销售部 3500 7 2010-10-06
    例如,我想列出每个部门最高薪水的结果,sql语句如下:
    SELECT DEPT, MAX(SALARY) AS MAXIMUM
    FROM STAFF
    GROUP BY DEPT
    查询结果如下:
    DEPT MAXIMUM
    开发部 2500
    设计部 2600
    销售部 3500
    解释一下这个结果:
    1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
    2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
    注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
    例如,查询每个部门的总的薪水数
    SELECT DEPT, sum( SALARY ) AS total
    FROM STAFF
    GROUP BY DEPT
    查询结果如下:
    DEPT total
    开发部 4500
    设计部 7000
    销售部 9600
    将 WHERE 子句与 GROUP BY 子句一起使用
    分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。
    例如,查询公司2010年入职的各个部门每个级别里的最高薪水
    SELECT DEPT, EDLEVEL, MAX( SALARY ) AS MAXIMUM
    FROM staff
    WHERE HIREDATE > ‘2010-01-01’
    GROUP BY DEPT, EDLEVEL
    ORDER BY DEPT, EDLEVEL
    查询结果如下:
    DEPT EDLEVEL MAXIMUM
    设计部 4 2300
    设计部 5 2600
    销售部 5 3000
    销售部 7 3500
    注意:在SELECT语句中指定的每个列名也在GROUP BY子句中提到。未在这两个地方提到的列名将产生错误。
    GROUP BY子句对DEPT和EDLEVEL的每个唯一组合各返回一行。
    在GROUP BY子句之后使用HAVING子句
    可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。HAVING子句可包含一个或多个用AND和OR连接的谓词。每个谓词将组特性(如AVG(SALARY))与下列之一进行比较:
    例如:寻找雇员数超过2个的部门的最高和最低薪水:
    SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM
    FROM staff
    GROUP BY DEPT
    HAVING COUNT( * ) >2
    ORDER BY DEPT
    查询结果如下:
    DEPT MAXIMUM MINIMUM
    设计部 2600 2100
    销售部 3500 3000
    例如:寻找雇员平均工资大于3000的部门的最高和最低薪水:
    SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM
    FROM staff
    GROUP BY DEPT
    HAVING AVG( SALARY ) >3000
    ORDER BY DEPT
    查询结果如下:
    DEPT MAXIMUM MINIMUM
    销售部 3500 3000

    展开全文
  • Group by用法

    千次阅读 2006-05-29 08:53:00
    Group by 用途: 对结果集进行分组,常与汇总函数一起使用。 语法: SELECT column,SUM(column) FROM table GROUP BY column例: “Sales” 表中的原始数据 : Company Amount W3Schools 
  • Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句 限制返回的...
  • pandas groupby 用法详解

    千次阅读 多人点赞 2020-12-21 22:55:56
    1.分组groupby ...pandas中,也有对应的groupby操作,下面我们就来看看pandas中的groupby怎么使用。 2.groupby的数据结构 首先我们看如下代码 def ddd(): levels = ["L1", "L1", "L1", "L2", "L2", "L3",
  • 关于mysql group by 用法总结

    千次阅读 2018-08-03 16:54:21
    group by 用法 select 聚合函数(分组字段) from table group by table.id having …… 当sql语句中包含group by 时,select后的字段只能是聚合函数或者group by 后面的分组字段。如果需要条件筛选,则写在having...
  • Python中的groupby用法

    万次阅读 2019-05-06 11:33:54
    Python中的groupby用法
  • python groupby用法实战

    万次阅读 2017-04-16 11:35:02
    python groupby用法实战
  • mssql CASE,GROUP BY用法

    2020-09-11 10:23:34
    创建数据库并利用case和group by实现数据库的插入数据操作
  • mysql group by 用法解析(详细)

    万次阅读 多人点赞 2019-03-19 14:00:51
    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 ...
  • MYSQL groupby使用方法

    2016-09-20 18:04:12
    GROUP BY 使用方法想用SELECT 筛选出来的字段 必需是在group by 后面 或者包含在聚合函数中例:错误:select a,b,c,d,sum(e) form xxxx表 要想不报错 a,b,c,d需在group by 后面或者像e一样在聚合函数中:正确:...
  • SQL中GROUP BY用法示例

    千次阅读 2018-11-15 16:36:03
    SQL中GROUP BY用法示例 概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。 GROUP BY必须得...
  • 秒懂mysql中的group by用法

    万次阅读 多人点赞 2019-06-06 18:13:23
    先来看下表1,表名为test: 执行如下SQL语句: SELECT name FROM test GROUP BY name 你应该很容易知道运行的结果,没...可是为了能够更好的理解“group by”多个列“和”聚合函数“的应用,我建议在思考的过程中...
  • 下面小编就为大家分享一篇Python数据分析中Groupby用法之通过字典或Series进行分组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 数据库_基础知识_GROUP BY 用法详解

    万次阅读 2016-02-24 17:17:07
    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 ...
  • 7.1 基本的GROUP BY用法

    千次阅读 2016-02-02 16:47:32
    7.1 基本的GROUP BY用法正在更新内容,请稍后
  • sql语句Group By用法

    2014-09-05 01:37:08
    sql语句Group By用法一则 2007-10-25 12:00 sql语句Group By用法一则 如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于...
  • MysqL group by 用法解析

    万次阅读 多人点赞 2013-03-08 08:43:30
    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 321,041
精华内容 128,416
关键字:

groupby用法