`

group by 用法解析

阅读更多
group by 用法解析
标签: it
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
分享到:
评论

相关推荐

    Linq Grouping GroupBy 用法详解

    本文将深入探讨`GroupBy`方法的使用,包括其基本用法、多键分组以及在实际开发中的应用示例。 ### 1. 基本用法 `GroupBy`方法接收一个函数作为参数,该函数用于从每个元素中提取分组键。例如,如果你有一个`...

    group by的详解

    综上所述,`GROUP BY`和`HAVING`在Oracle数据库中是用于数据统计和分析的重要工具,正确理解并掌握它们的用法对于编写有效的SQL查询至关重要。通过合理运用这两者,数据库管理员可以生成满足各种复杂业务需求的报表...

    简单讲解sql语句中的group by的使用方法

    下面我们将详细讨论`GROUP BY`的使用方法及其相关知识点。 1. **`GROUP BY`的基本概念** `GROUP BY`关键字用于将数据表中的数据根据一个或多个列的值进行分组。通过分组,你可以对每个组应用聚合函数,这有助于...

    对DataFrame数据中的重复行,利用groupby累加合并的方法详解

    ### DataFrame 数据中的重复行处理:利用groupby进行累加合并详解 在数据分析过程中,经常会遇到包含重复行的数据集。这些重复行可能包含了重要的累积信息,简单地删除它们可能会导致信息丢失,进而影响分析结果的...

    Group_by详解_完美例句

    【Group_by 详解】 在数据库查询中,`GROUP BY`语句是一个至关重要的部分,它允许用户根据指定的字段或表达式对数据进行分组,以便进行聚合计算或按组进行分析。`GROUP BY`的基本概念是将具有相同字段值的数据行...

    SQL GROUP BY 语句详解

    GROUP BY 语句还有其他高级用法,比如配合 HAVING 子句进行分组后的条件筛选,或者与子查询和联接操作结合使用,以实现更复杂的分析需求。总的来说,理解并熟练运用 GROUP BY 语句对于在 SQL 查询中进行数据分析至关...

    MYSQL GROUP BY用法详解

    在数据库管理和分析中,`GROUP BY`通常与聚合函数(如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`)一起使用,帮助我们从大量数据中获取有用的信息。 在本例中,`GROUP BY`被用来解决重复数据的问题。首先,创建了一个名...

    Oracle中分组查询group by用法规则详解

    使用`GROUP BY`时,`SELECT`列表中的非聚合函数列必须出现在`GROUP BY`子句中。这意味着,如果你选择了一个未在聚合函数中使用的列,该列就必须在`GROUP BY`子句中列出。例如: ```sql SELECT max(sal), job ...

    sqlserver+group by分组查询分页存储过程

    在给定的存储过程中,`GROUP BY`子句与分页查询的结合使用提供了一种高效的方法来处理和展示经过分组的大量数据。通过在存储过程中封装这些复杂逻辑,不仅简化了前端应用程序的开发,还提高了数据库操作的效率和响应...

    SQL语句中Group BY 和Rollup以及cube用法

    ### SQL语句中Group BY 和Rollup以及Cube用法 #### Group BY 子句 `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、...

    order_by_、group_by_、having的用法区别.doc

    ### SQL中的ORDER BY, GROUP BY, HAVING 的用法区别详解 #### 一、概述 在SQL查询语言中,`ORDER BY`, `GROUP BY`, 和 `HAVING` 是三个非常重要的概念,它们分别用于对查询结果进行排序、分组以及在分组后进一步...

    SqlServer中Group By高级使用--Inner Join分组统计

    首先,理解Group By的基本用法至关重要。Group By语句将结果集按照一个或多个列进行分组,这样我们可以对每个组应用聚合函数。例如,如果你有一个销售表,可以按产品类别分组,然后计算每个类别的总销售额: ```sql...

    group by 语法大全,内附列子

    接下来,我们将通过具体的例子来展示`GROUP BY`的使用方法。 ##### 示例1:去重复,统计不同学生的人数 ```sql SELECT COUNT(DISTINCT name) AS NumOfStudents FROM score_table; ``` 这里使用`COUNT(DISTINCT ...

    SQL问题详解之_having_Group by

    GROUP BY用于将数据分组,而HAVING则用于筛选这些分组,提供了一种在聚合数据级别应用条件的方法。这两个子句常与聚合函数一起使用,帮助我们从大量数据中提取出有价值的统计信息。 在实际的数据库查询中,GROUP BY...

    详解SQL中Group By的用法

    以上是对SQL中`GROUP BY`用法的详尽解析,通过理解这些概念,你可以更有效地对数据进行分组和汇总,从而进行更深入的数据分析。在实际应用中,结合不同的聚合函数和过滤条件,`GROUP BY`可以实现各种复杂的数据统计...

    DataFrame.groupby()所见的各种用法详解

    `DataFrame.groupby()`是Pandas库中的一个核心方法,它允许我们根据数据的某些特性进行分组操作,从而方便地对数据进行聚合分析。在本文中,我们将深入探讨`groupby()`的各种用法,并通过示例代码来理解其功能。 ...

    详解SQL中Group By的使用教程

    本教程将深入讲解`GROUP BY`的使用方法。 1. **概述** `GROUP BY`的主要功能是将数据表中的数据按照指定的列进行分组,每个分组内的数据具有相同的列值。这通常与聚合函数(如`SUM`, `COUNT`, `AVG`, `MAX`, `MIN`...

Global site tag (gtag.js) - Google Analytics