Orders数据如下:
SQL GROUP BY的作用:
The SQL GROUP BY statement is used along with the SQL aggregate functions like SUM to provide means of grouping the result dataset by certain database table column(s). See
http://www.sql-tutorial.net/SQL-GROUP-BY.asp
GROUP BY用于和SQL聚合函数(类似SUM)一起按照给定的数据表列给查询结果集合分组的。
一个必须注意的地方是:SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是聚合函数列。
仔细想想应该是这样理解的(为方便测试,贴SQL语句)
--SELECT * FROM "Orders";
--SELECT "Customer","OrderDate",SUM("OrderPrice") FROM "Orders" GROUP BY "OrderDate";
--SELECT "Customer","OrderDate",SUM("OrderPrice") FROM "Orders" GROUP BY "OrderDate";
--上面的语句报错:
--ERROR: column "Orders.Customer" must appear in the GROUP BY clause or be used in an aggregate function
--SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是用于聚合函数。
--原因:Group by会将结果集合并。上面的SELECT结果根据OrderDate合并集合。
--假设没有上面那个限制,会出现如下的冲突情况:记录3和记录7的OrderDate都是2008/07/21,将他们按照SUM(OrderPrice)求得值为1700,如果SELECT列中允许
--出现Customer列(一个不出现在Group By中的列),那么这条记录的Customer列的值应该显示什么呢?是Carter(7)还是Bush(3)呢?
--所以:SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是用于聚合函数。
--使用聚合函数必须结合Group By子句来使用。
--SELECT "Customer",SUM("OrderPrice") from "Orders";
--上面的语句报错:
--ERROR: column "Orders.Customer" must appear in the GROUP BY clause or be used in an aggregate function
--错误的理解过上面的一致。在不给定Group BY条件的情况下,SUM("OrderPrice"),这个聚合函数默认使用所有记录。同样会出现CUSTOMER冲突的情况。
--SELECT "Customer","OrderDate",SUM("OrderPrice") FROM "Orders" GROUP BY "OrderDate","Customer";
--上面这句select查询时可以跑的。但是只Group by了OrderDate,至于Customer为什么给忽略掉了,不明白。也想不通“正确执行”下来会是什么结果。
SELECT "Customer","OrderDate",SUM("OrderPrice") FROM "Orders" GROUP BY "Customer","OrderDate"
--Group by的条件换了一下顺序,Customer放在前面,查询的结构是一样的。奇怪了。Customer,OrderDate的优先级别是什么?
- 大小: 33.9 KB
分享到:
相关推荐
### SQL语句中Group BY 和Rollup以及...通过以上示例和解释,我们可以更好地理解SQL中`GROUP BY`、`ROLLUP`和`CUBE`的作用和用法。在实际工作中,根据需求选择合适的分组方式能够有效地提高数据处理的效率和灵活性。
通过阅读和执行这些语句,开发者可以加深对SQL的理解,并提升在实际项目中的应用能力。 总的来说,SQL语句测试是软件开发过程中的关键环节,尤其在数据驱动的应用程序中。它确保了数据库操作的准确性、稳定性和效率...
在IT行业中,SQL(Structured Query Language)是一种用于管理和处理关系型数据库的标准编程语言。这篇“sql数据库内部测试题”很可能是...通过这样的测试,学习者可以系统地评估自己在SQL数据库方面的理解和应用能力。
通过北大青鸟的SQL测试,你可以检验自己对这些关键概念的理解和应用能力。在准备过程中,不仅要理解这些概念,还要通过实践操作来增强你的SQL技能。解压缩文件“SQL内部测试题2”,并仔细研究其中的答案,可以帮助你...
准备这类题目时,应注重理解和实践,以便在实际工作中灵活运用。 总的来说,掌握SQL测试题目不仅需要理论知识,还需要大量的实践和问题解决经验。通过解题,可以提升对SQL的理解,更好地应对面试挑战,为职业生涯...
Oracle SQL 是一种强大的数据库查询语言...以上是对测试题目中涉及的Oracle SQL知识的详细解释,涵盖了统计、联接、子查询、排序、转换函数、序列和约束等核心概念。这些知识点对于理解并有效使用Oracle SQL至关重要。
根据提供的文件内容,我们可以整理出以下几个SQL面试题及其解答,这些问题主要聚焦于SQL查询技巧、数据处理以及数据结构的理解。 ### 1. 查询每门课都大于80分的学生姓名 **题目描述**:给定一张成绩表,其中包含...
对于测试新人来说,掌握基本的SQL操作是必要的技能,因为这将帮助他们有效地验证数据的正确性,理解系统行为,以及进行故障排查。下面将详细介绍一些在测试中常用的SQL语句。 1. **SELECT语句**:这是最基础的查询...
本教程旨在提供一个全面且深入的SQL知识框架,帮助读者更好地理解和掌握SQL的基本操作及其高级应用。我们将特别关注那些较为复杂的SQL指令,如`GROUP BY`和`HAVING`等。 #### 二、SQL基础指令详解 ##### 1. SELECT...
这个测试旨在检验学员对SQL语言的理解程度,包括但不限于数据查询、表的操作、数据库设计以及SQL语句的编写能力。下面我们将深入探讨SQL语言中的关键知识点。 1. **数据查询**:SQL的核心功能之一是查询数据。使用`...
建议按照文件顺序逐一运行并理解每个脚本的作用,遇到问题时查阅相关文档或在线资源,以加深对Oracle SQL的理解和应用能力。同时,实际操作和动手实践是学习数据库知识的关键,这将帮助你在理论知识与实际技能之间...
### Oracle PL/SQL测试题目与知识点解析 #### 一、选择题知识点解析 **1. Oracle数据库中为新创建的表分配的初始空间通常为多大?...通过理解和掌握这些知识点,可以帮助开发者更好地进行数据库设计和开发工作。
- 使用`INSERT INTO`语句向各个表中添加数据,如学生、课程和成绩等,这对于理解和测试SQL查询至关重要。 3. **SQL查询基础**: - **SELECT语句**:用于从表中选取数据,例如查询所有学生的姓名、班级,或查询某...
- 了解SQL的聚合函数和GROUP BY子句的基本用法是数据库操作的基础。 - 多做练习,尝试不同的查询结构,熟悉错误提示,有助于提高SQL技能。 通过以上解释,你应该能够理解ORA-00979错误的原因,以及如何修正它。在...
SQL,全称Structured Query Language,是用于管理关系数据库的标准语言。这个压缩包文件"SQL基本功测试题与参考答案"包含了一系列...同时,提供的参考答案将帮助他们检查自己的理解和解答是否正确,进一步巩固SQL技能。
本测试题集旨在全面覆盖SQL2005中的各种知识点,帮助用户深入理解和掌握其核心功能。以下是对这些知识点的详细解释: 1. **SQL基础语法**:包括SELECT语句的使用,如查询单个或多个字段,使用WHERE子句进行条件筛选...
在SQL的世界里,掌握基本和高级的查询...理解并熟练应用这些技巧对于数据库管理和数据分析至关重要。在实际工作中,SQL是数据处理的核心工具,能够高效地进行数据提取、转换和加载(ETL)任务,以及复杂的业务分析。
2. **数据查询**:测试可能包含使用`SELECT`语句进行复杂查询,包括子查询、联接(JOINs)、聚合函数(如`SUM`, `AVG`, `COUNT`, `MIN`, `MAX`)以及分组(GROUP BY)和排序(ORDER BY)。 3. **数据插入、更新和...
总的来说,这个“H2数据库SQL在线测试平台”是一个方便的学习和测试工具,可以帮助用户深入理解和掌握SQL语言,同时利用H2数据库的灵活性和Java的便利性,实现快速的测试和验证。无论是对于SQL新手还是专业人士,...
总的来说,`sql_mode=only_full_group_by`的解决方案不仅涉及技术操作,还涉及到对SQL标准的理解和代码质量的提升。正确处理这一问题有助于提高代码的健壮性和数据库的稳定性。在实际应用中,应结合业务需求和数据库...