`
glutinit
  • 浏览: 47494 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle学习笔记----group by, having等语句的执行顺序

阅读更多

select xxx_name, count(*) as counter
from table_y
where where_condition
group by xxx_name
having having_condition
order by zzz

当我们看到一个类似上述的包含了where, group by, having, order by等关键字的SQL时,我们要首先要知道其执行顺序是怎样的,才能判断出其所表达的含义;
下面列出其执行顺序:
1. 根据where子句选择行;
2. 根据group by 子句组合行;
3. 为每个组计算分组函数的结果;
4. 根据having子句筛选组;
5. 根据order by子句中的分组函数的结果对组进行排序,order by必须使用分组函数或者使用Group by子句中指定的列;

下面看一个例子:
select CategoryName, count(*), AVG(Rating)
from BOOKSHELF
where Rating>1
group by CategoryName
having CategoryName like 'A%'
order by count(*) desc

我们现在知道,其执行顺序如下:
1.基于Where Rating>1 筛选出符合条件的行;
2.基于group by CategoryName 对筛选的结果进行分组;
3.为每个CategoryName组计算Count(*)
4. 基于having CategoryName like 'A%'留下符合条件的组
5. 根据order by 的条件对剩下的行组进行排序,SQL中的count(*)也是分组函数



分享到:
评论
1 楼 小小诺 2013-02-01  
SQL中的count(*)也是分组函数
???这个怎么讲?

相关推荐

    Oracle学习笔记.pdf

    SQL语句的执行顺序是:`FROM` -> `WHERE` -> `SELECT` -> `GROUP BY` -> `HAVING` -> `ORDER BY`。首先从`FROM`子句开始,确定数据来源;接着`WHERE`子句过滤数据;然后`SELECT`提取所需字段;`GROUP BY`对数据进行...

    Oracle学习笔记

    此外,李兴华老师还对组函数和分组统计进行了深入解释,例如 COUNT()、MAX()、MIN()、AVG()、SUM() 等组函数的使用方法,并对 GROUP BY 子句和 HAVING 子句进行了详细介绍。 在本篇笔记中,李兴华老师还提供了许多...

    Oracle学习笔记.doc

    ### Oracle学习笔记知识点详解 #### 一、SQL概述与Oracle简介 - **SQL**(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被用来执行各种数据库操作,如查询数据、更新数据...

    Oracle学习笔记_(PDF版)

    - **SELECT语句执行顺序**: 先执行 `WHERE` 子句,然后是 `GROUP BY` 和 `HAVING` 子句,最后是 `ORDER BY` 子句。 - **修改管理员权限**: - 首先以超级管理员身份登录。 - 授权给特定用户(如scott)创建表和视图...

    Oracle查询操作的学习笔记

    ### Oracle查询操作学习笔记知识点详解 #### 一、Oracle用户管理与权限分配 - **创建用户**:在Oracle中创建用户的基本语法为`CREATE USER username IDENTIFIED BY password`。例如,`CREATE USER xiaoming ...

    玩转oracle学习笔记(三)-Oracle操作

    4. **查询操作**:使用SELECT语句进行数据检索,掌握JOIN、GROUP BY、HAVING、子查询等高级查询技术。 5. **事务处理**:了解事务的概念,掌握COMMIT、ROLLBACK和SAVEPOINT操作,确保数据的一致性和完整性。 6. **...

    oracle学习笔记 串讲

    ### Oracle学习笔记知识点详解 #### 一、SQL查询与结构 **知识点1:数据库文件与日志** 在Oracle中,数据库文件(`.dbf`)和日志文件(`.log`)是数据库的重要组成部分。数据库文件存储实际的数据,而日志文件记录...

    韩顺平玩转oracle学习笔记

    ### 韩顺平玩转Oracle学习笔记知识点详解 #### 一、Oracle基本使用——基本命令 ##### 连接命令 - **`conn[ect]`**:此命令用于连接到Oracle数据库。语法如下: - `conn 用户名/密码@网络服务名 [as sysdba/...

    oracle数据库学习笔记

    ### Oracle 数据库学习笔记 #### Oracle DML 数据库操作语言 - **数据插入**: 在 Oracle 数据库中,可以通过 `INSERT` 语句将一个表的部分数据插入到另一个表中。例如,利用 `INSERT INTO table_name (subquery)` ...

    韩顺平Oracle教学笔记.docx

    韩顺平Oracle数据库教程笔记涵盖了Oracle数据库的基础知识和高级技术,涵盖了数据类型、查询语句、条件语句、排序语句、分组语句、联结语句、子查询、数据操作、视图、索引、存储过程、触发器、数据库设计、数据库...

    oracle 学习笔记

    2. Having子句在执行顺序上紧跟Group By子句。 3. Where和Having的区别在于作用范围不同,Where是在分组之前过滤记录,Having则是在分组之后过滤聚合结果。 十一、非关联子查询 1. 非关联子查询是一类独立的查询,...

    玩转oracle学习笔记(二)-Oracle表的管理

    "玩转Oracle学习笔记(二)-Oracle表的管理"这一主题深入探讨了如何有效地创建、维护和管理Oracle数据库中的表。Oracle提供了丰富的语法和功能来满足不同业务场景的需求。 首先,创建表是数据库设计的基础步骤。在...

    Oracle学习笔记.txt

    ### Oracle学习笔记知识点详解 #### 一、Oracle基础概念与常用命令 1. **`desc` 命令**:用于描述表结构。通过输入 `desc 表名` 可以查看该表的所有列信息,包括列名、数据类型、是否为空等。 2. **`dual` 表**...

    oracle学习笔记

    掌握SQL的SELECT语句,学会使用WHERE子句进行条件筛选,以及GROUP BY和HAVING子句进行数据分组和过滤,是日常工作中不可或缺的技能。 3. **PL/SQL编程**:Oracle的PL/SQL是SQL的扩展,支持过程化编程。理解PL/SQL块...

    Oracle经典学习笔记

    从给定的“Oracle经典学习笔记”中,我们可以提炼出一系列关键的Oracle数据库操作与查询技巧,涵盖了SQL语言的基础到进阶用法。下面将详细解释这些知识点: ### SQL Plus登录与用户管理 - **登录SQL Plus:** 使用...

Global site tag (gtag.js) - Google Analytics