在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...
GROUP BY... was added to SQL because aggregate functions (like SUM) return the aggregate of all column values every time they are called, and without the GROUP BY function it was impossible to find the sum for each individual group of column values.
GROUP BY...之所以加到SQL中去是因为集合函数(像SUM)每当他们被访问时就会返回集合所有栏目的值,而且没有GROUP BY的话就不能够找出单独一种栏目所累计的值了。
The syntax for the GROUP BY function is:
使用GROUP BY函数的语法为:
SELECT column,SUM(column) FROM table GROUP BY column
|
GROUP BY Example
举例
This "Sales" Table:
这是张名为"Sales"的表:
Company
Amount
W3Schools |
5500 |
IBM |
4500 |
W3Schools |
7100 |
And This SQL:
这是条SQL:
SELECT Company, SUM(Amount) FROM Sales
|
Returns this result:
返回的结果为:
Company
SUM(Amount)
W3Schools |
17100 |
IBM |
17100 |
W3Schools |
17100 |
The above code is invalid because the column returned is not part of an aggregate. A GROUP BY clause will solve this problem:
上面这些代码几乎是无效的,因为栏目所返回的数值并不属于我们想要的那种合计。使用 GROUP BY子句可以解决这个问题:
SELECT Company,SUM(Amount) FROM Sales GROUP BY Company
|
Returns this result:
返回的结果为:
Company
SUM(Amount)
W3Schools |
12600 |
IBM |
4500 |
HAVING...
HAVING... was added to SQL because the WHERE keyword could not be used against aggregate functions (like SUM), and without HAVING... it would be impossible to test for result conditions.
WHERE关键字在使用集合函数时不能使用,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。
The syntax for the HAVING function is:
HAVING的使用语法为:
SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value
|
This "Sales" Table:
这是名为"Sales"的表:
Company
Amount
W3Schools |
5500 |
IBM |
4500 |
W3Schools |
7100 |
This SQL:
SQL语句:
SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000
|
Returns this result
返回的结果为
Company
SUM(Amount)
W3Schools |
12600 |
分享到:
相关推荐
### SQL_HAVING 使用详解 #### 一、HAVING 子句概述 在 SQL 查询语言中,`HAVING` 子句被用来过滤由 `GROUP BY` 子句产生的结果集。与 `WHERE` 子句不同,`HAVING` 子句在数据经过分组后才应用过滤条件。这意味着 ...
SQL中的HAVING子句用法 HAVING子句是SQL中的一种子句,用于对 GROUP BY 子句所确定的行组进行控制。HAVING 子句条件中只允许涉及常量、聚组函数或 GROUP BY 子句中的列。在 Oracle 中,HAVING 子句是对 GROUP BY ...
### 基于TP框架SQL之where与having区别的详细解析 #### 一、Where与Having的区别 在SQL查询语句中,`WHERE`和`HAVING`子句都用于过滤查询结果,但它们的应用场景有所不同。 - **WHERE子句**: - 作用:在对查询...
在SQL查询中,GROUP BY和HAVING子句是数据分析和聚合操作的核心部分,它们帮助我们对数据进行分组和过滤,以获得更有意义的结果。在深入理解这两个子句之前,我们首先需要了解聚合函数,如SUM、COUNT、MAX和AVG等。 ...
SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select ...SQL Having SQL ucase() SQL lcase() SQL mid() SQL len() SQL round() SQL now() SQL format() SQL 总结 SQL 快速索引 SQL 总结
在SQL查询中,`HAVING`子句是用来在分组后的数据上设置过滤条件的,而`WHERE`子句则是在数据分组之前对原始数据进行筛选。这两者虽然都是用于限定查询结果,但作用的对象和时机不同。 首先,`WHERE`子句是SQL查询的...
在SQL查询中,`WHERE`和`HAVING`子句都是用于过滤数据,但它们的应用场景和作用方式有所不同。理解这两个子句的区别对于编写高效的SQL语句至关重要。 首先,`WHERE`子句主要应用于筛选单个或多个字段满足特定条件的...
在SQL查询中,`WHERE` 和 `HAVING` 都是用来过滤数据的子句,但它们的应用场景和功能有所不同。首先,我们需要了解`WHERE`子句的基本用法。`WHERE`子句用于在数据检索之前对原始记录进行筛选,它不支持聚合函数,即...
Sqlch11_2having条件分组查询.sql,Sqlch11_2having条件分组查询.sql Sqlch11_2having条件分组查询.sql,Sqlch11_2having条件分组查询.sql
“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。 2.使用的角度: where后面之所以不能使用聚合函数是因为where的执行顺序...
4. **查询语言**:详述SELECT语句的用法,用于检索数据,包括WHERE子句、JOIN操作、GROUP BY和HAVING子句,以及聚合函数如COUNT、SUM、AVG等。 5. **事务处理**:讲解如何使用BEGIN、COMMIT和ROLLBACK来管理数据库...
在SQL中,GROUP BY子句用于将结果集按照一个或多个列进行分组,而HAVING子句则用于基于这些分组的结果进行条件过滤。与WHERE子句在分组前对数据进行过滤不同,HAVING子句在分组后对分组的结果进行过滤。本文将详细...
SQLQuery1.sql可能包含了各种基础到进阶的查询示例,如SELECT语句的使用,包括选择特定列、使用WHERE子句过滤数据、GROUP BY进行数据分组以及HAVING子句对分组后的数据进行过滤。可能还有JOIN操作,用于合并多个表的...
全书可分为两部分,第一部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,比如CASE表达式、自连接、HAVING子句、外连接、关联子查询、EXISTS……去探索新发现。这部分不仅穿插讲解了这些技巧背后的逻辑...
### 精细化数据筛选:HAVING 子句在 SQL 中的应用 SQL(Structured Query Language,结构化查询语言)作为一种核心的语言,在管理和操作关系型数据库方面发挥着至关重要的作用。SQL 不仅支持基本的数据检索、插入、...
- GROUP BY和HAVING子句:用于数据分组和筛选分组结果。 - JOIN操作:用于连接两个或多个表,以获取跨表的数据。 2. PL/SQL扩展特性: - 块结构:PL/SQL由声明部分、执行部分和异常处理部分组成,形成一个可执行...
本文将深入探讨SQL中的WHERE子句和HAVING子句,这两种子句在查询语句中扮演着重要角色。 WHERE子句是SQL查询语句的基础部分,用于在检索数据时设定条件。它在SELECT语句中使用,对查询结果进行筛选,只返回满足特定...
### SQL Server HAVING 子句的使用方法 在SQL Server中,`HAVING`子句是一种非常有用的工具,用于过滤`GROUP BY`操作后产生的结果集。与`WHERE`子句不同,`HAVING`子句可以应用于聚合函数(如`COUNT()`、`SUM()`等...
该章是学习SQL的基础,涵盖了SELECT语句的使用,如查询、排序、分组、聚合函数等,还有WHERE、HAVING子句用于数据过滤。 第4章:DML操作 本章讲解INSERT、UPDATE和DELETE语句,用于数据的插入、修改和删除,以及...
SQL的强大之处在于它允许用户直接与数据库进行交互,而无需关心数据的具体存储方式。这种抽象级别的操作使得SQL成为了一种高度灵活且易于学习的语言。 #### 二、SQL的发展历程 - **起源**:SQL最初由IBM的圣约瑟...