在SQL中使用GROUP BY来对SELECT的结果进行数据分组,在具体使用GROUP BY之前需要知道一些重要的规定。
- GROUP BY子句可以包含任意数目的列。也就是说可以在组里再分组,为数据分组提供更细致的控制。
- 如果在GROUP BY子句中指定多个分组,数据将在最后指定的分组上汇总。
- GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用了表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。
- 出了聚集计算语句外,SELECT语句中的每一列都必须在GROUP BY子句中给出。
- 如果分组列中有NULL值,则NULL将作为一个分组返回。如果有多行NULL值,它们将分为一组。
- GROUP BY子句必须在WHERE子句之后,ORDER BY之前。
过滤分组
对分组过于采用HAVING子句。HAVING子句支持所有WHERE的操作。HAVING与WHERE的区别在于WHERE是过滤行的,而HAVING是用来过滤分组。
另一种理解WHERE与HAVING的区别的方法是,WHERE在分组之前过滤,而HAVING在分组之后以每组为单位过滤。
分组与排序
一般在使用GROUP BY子句时,也应该使用ORDER BY子句。这是保证数据正确排序的唯一方法。
SQL SELECT语句的执行顺序:
- from子句组装来自不同数据源的数据;
- where子句基于指定的条件对记录行进行筛选;
- group by子句将数据划分为多个分组;
- 使用聚集函数进行计算;
- 使用having子句筛选分组;
- 计算所有的表达式;
- 使用order by对结果集进行排序;
- select 集合输出。
举个例子吧。
1 |
select 考生姓名, max (总成绩) as max 总成绩
|
2 |
from tb_Grade
|
3 |
where 考生姓名 is not null
|
4 |
group by 考生姓名
|
5 |
having max (总成绩) > 600
|
6 |
order by max 总成绩
|
在上面的示例中 SQL 语句的执行顺序如下:
- 首先执行 FROM 子句, 从 tb_Grade 表组装数据源的数据
- 执行 WHERE 子句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据
- 执行 GROUP BY 子句, 把 tb_Grade 表按 "学生姓名" 列进行分组
- 计算 max() 聚集函数, 按 "总成绩" 求出总成绩中最大的一些数值
- 执行 HAVING 子句, 筛选课程的总成绩大于 600 分的
- 执行 ORDER BY 子句, 把最后的结果按 "Max 成绩" 进行排序
- 详见:http://www.nowamagic.net/librarys/veda/detail/147
相关推荐
分组查询GROUP BY是SQL语言中用于对...总之,理解GROUP BY的使用以及SQL执行顺序对于编写高效、准确的SQL查询至关重要。通过合理运用这些概念,我们可以对大量数据进行有效的分析和处理,从而得出有价值的统计信息。
当同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序时的用法
SQL 执行顺序大总结 SQL 执行顺序是一个非常重要的概念,对于任何一个 SQL 开发者来说都非常重要。今天,我们将深入探讨 SQL 执行顺序的每一个步骤,从 FROM 到 SELECT,了解每一个步骤的执行顺序和细节。 FROM ...
#### SQL查询完整执行顺序与逻辑处理步骤 SQL查询的执行顺序遵循一定的逻辑流程,包括: 1. **FROM**:组装来自不同数据源的数据。 2. **WHERE**:基于条件筛选记录行。 3. **GROUP BY**:将数据划分为多个分组。 ...
数据库查询语句执行顺序与编写顺序详解 数据库查询语句的执行顺序和编写顺序是数据库开发中非常重要的知识点。特别是在WHERE、GROUP BY、HAVING、ORDER BY同时出现时,执行顺序和编写顺序变得尤为重要。本文将详细...
### SQL查询的逻辑执行顺序详解 #### 一、引言 SQL(Structured Query Language)作为数据库操作的标准语言,在数据检索、管理和分析方面扮演着至关重要的角色。为了更高效地理解和优化SQL查询,了解其背后的执行...
4. **HAVING子句**:HAVING子句用于对分组后的结果进行进一步的过滤,其执行顺序在GROUP BY之后。 5. **SELECT子句**:最后是SELECT子句,选择需要返回的数据列。这里需要注意的是,少用通配符“*”,而是明确指定...
5. **GROUP BY 子句**:如果查询中包含聚合函数(如SUM、AVG等),则会使用`GROUP BY`子句来对数据进行分组。这一步骤发生在`WHERE`子句之后,因为`GROUP BY`只能作用于经过`WHERE`筛选后的数据。 6. **WITH CUBE |...
了解 SQL 语句的执行顺序可以帮助开发人员更好地优化查询语句,提高数据库性能。 SQL 语句的执行顺序可以分为 11 个步骤: 1. FROM 子句:首先对 FROM 子句中的前两个表执行一个笛卡尔乘积,生成虚拟表 vt1。 2. ...
本文将深入探讨MySQL数据库系统中的SQL语句执行过程,包括MySQL的架构总览、查询执行流程以及SQL语句的解析顺序。 首先,我们来看MySQL的架构总览。MySQL架构分为两个主要层次:SQL Layer(SQL层)和Storage Engine...
在这篇文章中,我们将详细地讲述 SQL 语句的解析顺序,包括 FROM、WHERE、GROUP BY、HAVING、SELECT 等子句的执行顺序。 首先,FROM 子句是 SQL 语句的第一步骤,它标识了需要查询的表,并生成一个虚拟表 VT1。FROM...
了解T-SQL语句的执行顺序对于优化查询性能和编写更高效的代码至关重要。以下是对标题和描述中所述知识点的详细说明: 1. **SELECT**: SELECT语句用于从一个或多个表中选取数据。在T-SQL中,这是执行的第一步,它...
下面将详细解释如何根据查询逻辑执行顺序来优化SQL语句。 首先,理解SQL的逻辑执行顺序是优化的前提。按照标准的SQL解析顺序,它依次为: 1. FROM子句:此阶段将从各个数据源(如表或视图)中组合数据,生成初步的...
`ORDER BY`语句用于指定查询结果的排列顺序,通常与`GROUP BY`一起使用。在示例中,`ORDER BY maturity ASC`表示按照`maturity`列的值以升序排序。这有助于确定每组中的行位置。 要获取每组的第N行数据,我们可以...
### SQL语句中SELECT语句的执行顺序 在SQL语言中,`SELECT`语句是进行数据查询的核心工具。为了确保查询结果的准确性和效率,理解`SELECT`语句内部的执行顺序至关重要。本文将详细解析`SELECT`语句各子句的执行...
### NCR Teradata SQL执行分析 #### 一、Teradata数据分布与主索引(PPI) 在Teradata数据库中,数据分布与主索引(Primary Index, PI)密切相关。这决定了数据如何分布在不同的AMP(Access Method Processor)上,...
`order by piece asc`是为了按照SQL语句的片段顺序排列。 #### 3. 监控当前会话的等待事件 除了查看SQL语句本身,我们还需要关注会话的等待事件,这些事件可能会影响SQL语句的执行效率。 ```sql -- 查询当前会话...
了解SELECT语句的执行顺序对于编写高效、正确的SQL查询至关重要。本文将详细介绍SELECT语句各部分的执行顺序,并通过具体示例加深理解。 #### SELECT语句的基本结构 SELECT语句的基本结构如下: ```sql SELECT ...
在SQL中,对数据库数据进行分类、分组和总计是数据分析和报表生成的关键步骤。...在实际操作中,确保正确选择`ORDER BY`, `GROUP BY`, `WHERE`, `HAVING`的组合,以及合适的聚合函数,将使你的SQL查询更加灵活和强大。