在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) FROM bbc
这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。
通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前,而 HAVING子句在聚合后对组记录进行筛选。
让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。
SQL实例:
一、显示每个地区的总人口数和总面积:
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。
二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
相反,HAVING子句可以让我们筛选成组后的各组数据。
select AMMETERNO,COUNT(*) from ammeter_pr_daytbl GROUP BY AMMETERNO HAVING AMMETERNO LIKE '350%'
AMMETERNO COUNT(*)
注:本文为转载,用于自己学习!
分享到:
相关推荐
在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...
在实际的数据库查询中,GROUP BY和HAVING子句可以组合使用复杂的条件,以满足各种复杂的分析需求。例如,我们可能需要找出人口超过一定数量并且面积在特定范围内的地区,这可以通过在HAVING子句中同时设置多个条件来...
在SQL查询中,`order_by_`、`group_by_`和`having`是三个非常重要的关键字,它们分别用于不同的数据处理操作。 1. `ORDER BY`:此关键字用于对查询结果进行排序,默认是升序(ASC),也可以指定降序(DESC)。在`...
在MySQL中,`GROUP BY` 和 `HAVING` 通常一起用于聚合查询,用来筛选满足特定条件的分组。...在实际开发中,应尽量遵循SQL的标准规范,使用 `GROUP BY` 来配合 `HAVING`,确保查询的准确性和效率。
下面我们将详细讨论`GROUP BY`的使用方法及其相关知识点。 1. **`GROUP BY`的基本概念** `GROUP BY`关键字用于将数据表中的数据根据一个或多个列的值进行分组。通过分组,你可以对每个组应用聚合函数,这有助于...
在更复杂的查询中,GROUP BY和HAVING可以结合使用。例如,如果我们有一个名为`orders`的订单表和一个名为`customer`的客户表,我们可以统计每个客户的订单数量: ```sql SELECT c.name, COUNT(o.order_number) as ...
在SQL查询语言中,`ORDER BY`, `GROUP BY`, 和 `HAVING` 是三个非常重要的概念,它们分别用于对查询结果进行排序、分组以及在分组后进一步筛选数据。这些操作对于数据分析和报表制作来说至关重要。 #### 二、ORDER ...
在SQL查询中,`GROUP BY`和`HAVING`是两个非常重要的子句,它们用于数据的分组和过滤,特别是在处理聚合数据时。本文将深入解析这两个概念及其使用方法。 首先,`GROUP BY`子句是用于将数据集按照指定的列或表达式...
在MySQL数据库中,ORDER BY、GROUP BY 和 HAVING 子句是SQL查询中用于数据...在实际应用中,ORDER BY、GROUP BY 和 HAVING 的组合使用可以实现更复杂的查询需求,比如多级分组和排序,以及基于分组结果的进一步筛选。
order_by_、group_by_、having的用法区别
本文将详细介绍WHERE、GROUP BY、HAVING、ORDER BY的执行顺序和编写顺序,以及它们之间的关系。 一、WHERE子句的执行顺序 WHERE子句的执行顺序是先对全表数据进行筛选,返回第一个结果集。WHERE子句的作用是过滤...
在SQL查询中,`WHERE`、`GROUP BY`和`HAVING`子句都是用于数据筛选和分组的重要部分,但它们各自承担不同的任务。理解它们的用法对于编写有效的SQL查询至关重要。 首先,`WHERE`子句是SQL查询中最基本的过滤条件,...
`GROUP BY`和`HAVING`结合使用,可以实现更复杂的分组统计和过滤,尤其在需要对分组结果进行进一步分析时非常有用。例如,我们可以根据`work_date`统计每个月的平均打字页数,或者找出每月打字最多的员工。这在数据...
3. **排序顺序**:当同时使用`GROUP BY`、`HAVING`和`ORDER BY`时,`ORDER BY`通常放在最后。在示例中,`ORDER BY p.name`确保结果按供应商名字排序,而Oracle会默认按照`GROUP BY`中的列顺序进行排序,即先按年份、...
为了编写高效的 SQL 查询,了解 `WHERE`、`GROUP BY` 和 `HAVING` 子句的正确使用顺序至关重要: 1. **WHERE 子句**:用于筛选原始数据,尽可能地在分组之前减少数据量。 2. **GROUP BY 子句**:用于基于指定列对...