1、sql语句select的执行过程
(1)根据where字句的条件表达式,从from子句指定的基本表或视图中找到满足条件的元组。
(2)再按select子句中的目标列的表达式,选出元组的属性值形成结果表。
(3)如果有group子句,则将结果表按group中指定的列进行分组,该属性列值相等的元组为一组,通常会在每组中作用集函数。
(4)如果group子句带having短语,则只有满足having指定条件的组才输出。
(5)如果有order子句,则将结果表按order子句指定的列升序或降序排序。
2、group by 子句的将查询结果表按某一列或多列分组,值相等的为一组。对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用与整个查询结果。
(1)实验说明group的常见操作和错误
实验数据
SQL> select * from student;
ID CLASSNO NAME
---------- ---------- ------------------
1 1 张三
2 1 李四
3 1 王五
4 2 刘六
5 2 钱七
6 2 赵八
已选择6行。
问题1:查出一班的人数?
SQL> select count (*) from student where classno=1 group by classno;
COUNT(*)
----------
3
问题2:查人数的同时能不能把学生姓名也查出来呢?
SQL> select name ,count (*) from student where classno=1 group by classno;
select name ,count (*) from student where classno=1 group by classno
*
ERROR 位于第 1 行:
ORA-00979: 不是 GROUP BY 表达式
可见这个语句满足不了我们的目的,因为我们分组后,我们是对组进行操作,像学生姓名这列不是组能有的性质。
3、巧用 group 分组集函数
(1)问题的提出
SQL> select * from student1;
ID SID SNAME CLASSID D
---------- ---------- ---------- ---------- ----------
1 1 a 1 1
2 1 a 1 2
3 2 b 1 2
问题如下:
只是要生成excle表。只能对数据库做查询操作
想要的结果是:
ID SID SNAME CLASSID D
---------- ---------- ---------- ---------- ----------
1 1 a 1 1
3 2 b 1 2
这个问题怎么解决呢?
想到用distinct
select id ,distnict(sid ),sname , classid ,d from student1
可惜sql不支持distnict这中用法
sql中 只能select distnict id ,sid,sname ,classid ,d from student1
可这样不能满足我们的要求。
(2)巧用 group 分组集函数
SQL> select min(id),sid,sname,classid,min(d) from student1 group by sid,sname,classid;
MIN(ID) SID SNAME CLASSID MIN(D)
---------- ---------- ---------- ---------- ----------
1 1 a 1 1
3 2 b 1 1
分享到:
相关推荐
在7.10 GROUP BY Restrictions这一部分,作者深入探讨了在使用GROUP BY子句时的一些限制和注意事项,这对于理解和编写高效、正确的SQL查询至关重要。 1. GROUP BY基础:GROUP BY子句用于将数据集按照一个或多个列...
使用`MODEL`指令需要对Oracle SQL有深入理解,但能解决一些其他方法无法处理的复杂问题。 在实际应用中,选择哪种方法取决于具体的需求、数据结构以及Oracle数据库的版本。例如,如果只需要简单的字符串连接,`...
本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...
通过阅读“sql分组函数使用.txt”,你将能够深入了解如何在Oracle中有效地使用GROUP BY,以及它如何与其他SQL元素结合使用以提供深入的数据洞察。理解并熟练运用这些概念对于进行复杂的数据分析和报告至关重要。
本篇文章将深入探讨如何利用`GROUP BY`来优化`DISTINCT`查询,以提高SQL查询性能。 首先,我们分析给出的SQL语句,这是一个非常复杂的查询,涉及到多个表的连接(JOIN)以及大量的列选择。`DISTINCT`关键字用在这里...
本文将从`GROUP BY`的基础概念出发,通过一系列示例和深入分析,帮助读者更清晰地理解`GROUP BY`的工作原理及其应用场景。 #### 一、`GROUP BY`的基本概念 `GROUP BY`子句用于结合`SELECT`语句,将来自同一个表的...
在深入了解Oracle数据库的I/O操作之前,我们首先需要了解Oracle数据库的基本物理结构,这有助于更好地理解I/O产生的原因及其过程。 **1.1.1 控制文件** 控制文件是Oracle数据库的核心组成部分之一,它包含了关于...
在"ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句"这篇博文中,作者深入探讨了GROUP BY子句的高级用法,特别是如何利用扩展功能来处理更复杂的查询需求。 在标准的GROUP BY语句中,我们通常会指定一列或多列,...
《精通Oracle10编程》是一本深入探讨Oracle数据库10g版本编程的参考资料,适合对数据库有基础了解并希望进一步提升Oracle技术的读者。Oracle作为全球广泛使用的大型关系型数据库管理系统,其10g版本在功能和性能上都...
Oracle数据库是全球广泛使用的大型关系型...以上是对Oracle数据库核心知识点的概述,深入理解和熟练掌握这些内容,将为你的面试和实际工作打下坚实的基础。在实践中,不断学习和积累经验,才能成为真正的Oracle大师。
下面我们将深入探讨`GROUP BY`语句的使用方法及其相关知识点。 首先,`GROUP BY`语句的基本结构是这样的: ```sql SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name WHERE ...
- 了解SQL的聚合函数和GROUP BY子句的基本用法是数据库操作的基础。 - 多做练习,尝试不同的查询结构,熟悉错误提示,有助于提高SQL技能。 通过以上解释,你应该能够理解ORA-00979错误的原因,以及如何修正它。在...
李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...
在本文中,我们将深入探讨`GROUP BY`的用法、注意事项以及它在实际应用中的作用。 首先,让我们了解`GROUP BY`的基本语法。当我们在一个查询中使用`GROUP BY`时,我们首先要指定一个或多个列名,这些列将根据其值对...
此外,还可能涉及到了更高级的查询技巧,如联接(JOIN)、子查询、分组(GROUP BY)、排序(ORDER BY)以及窗口函数(OVER())等。 另一方面,“www.pudn.com.txt”这个文件名看起来像是来源于一个网站地址,可能是...
通过《Oracle实用教程(第五版)(Oracle11g版)》的学习,读者不仅可以掌握Oracle数据库的基础操作,还能深入理解其高级特性,为实际工作中的数据库管理打下坚实基础。结合实际的“学生表、课程表、成绩表”案例,...
本书全面覆盖了Oracle 11g版本中的SQL语法、功能及最佳实践,旨在帮助读者深入理解和掌握这一强大的数据库查询语言。 在Oracle 11g中,SQL是进行数据管理、检索、更新和删除的核心工具。以下是本书可能涉及的一些...
这本书“Oracle SQL(SQL for Oracle)”显然是为了帮助读者深入理解和掌握在Oracle环境中有效使用SQL。 在Oracle SQL中,有以下几个关键知识点: 1. **数据类型**:Oracle支持多种数据类型,包括数值型(如NUMBER...