`

SQL基础总结(五):汇总和分组数据

 
阅读更多

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

-------------------------

只对单个值进行操作的是标量函数。

对一组值进行操作以产生一个汇总值的是SQL聚合函数或集合函数。

可以对行的集合进行聚合,这些行可以是:

1. 表中所有的行。

2. 那些由Group by子句创建的行。

3. 那些由where子句指定的行。

 

筛选组使用Having子句。没有聚合的查询一行接一行的处理,聚合查询将表作为整体,并从中构造新行。

 

除了count(*)以外,所有聚合函数都将忽略空值,count(expr)count(*)绝对不会返回空值,而是返回一个正整数或零。

 

如果集合中没有行或者只有包含的行,其它的聚合函数将返回空值。

聚合表达式不能出现在WHERE子句里。

不能在SELECT子句中混合使用非聚合表达式和聚合表达式。

对于分组列可以混合使用非聚合表达式和聚合表达式。

不可以嵌套聚合函数。

不可以在聚合表达式中使用子查询,AVG(SELECT …)是非法的。

 

使用MIN()查找最小值。

 

使用MAX()查找最大值。

 

使用SUM()计算总和。

 

使用AVG()计算平均值,即算数平均值,等于集合中量的总和除以集合中量的个数。

如果一行没有,则平均值是空值,而不是设想的零。

不应该在SQL或宿主语言中自己编写统计程序。

 

使用COUNT()统计行数。

COUNT(expr)返回expr不为空的行数。

COUNT(*)返回集合中全部行的个数,包括空值和重复值。

 

使用DISTINCT()聚合不重复的值。

对于SUMAVGCOUNTDISTINCT在计算总和、平均值或统计行数之前消除重复值。对于MINMAXDISTINCT没有意义。

不能对COUNT(*)使用DISTINCT,但是可以用COUNT(DISTINCT expr)统计非空行的个数。

 

GROUP BY子句位于WHERE子句之后、ORDER BY子句之前。分组列可以是列名或派生列。输入表中的列无法出现在聚合查询的SELECT子句中,除非它们也被包含在group by子句中。

 

如果分组列包含多个空值,空值将被放进一个分组中。分组包含多个空值并不意味着空值彼此相等。

 

在包含GROUP BY子句的查询中使用WHERE子句,在分组前消除行。

不能在GROUP BY子句中使用列别名。

 

出现在columns中的非聚合列也必须出现在grouping_columns中。

 

COUNT(expr)统计非空值,而COUNT(*)统计包括空值在内的所有值。GROUP BY认可空值,并且为其创建一个空值分组。

 

使用WHERE子句将不想分组的行排斥在外,使用HAVING子句在分组后筛选行。

 

GROUP BY查询中,一个聚合函数返回多个值被称为矢量聚合,在缺少GROUP BY子句的查询中,一个聚合函数返回单个值被称为标量聚合。

 

应该为经常分组的列创建索引。

 

WHERE查询条件在分组产生以前就被应用,而HAVING搜索条件在分组产生之后才被应用。在分组前使用WHERE可以减少分组后的行数,因此更高效。

 

除了HAVING可以包含聚合函数以外,HAVING语法类似于WHERE语法。

分享到:
评论

相关推荐

    SQL语句之基础语法汇总

    SQL语句之基础语法汇总是一篇详细的SQL语句基础知识总结,包括创建表、修改表、删除表、添加数据、更新数据、删除数据等基础语法。下面是对该篇文章的知识点总结: 一、创建表、修改表、删除表 * 创建表:使用...

    数据分析面试题-SQL面试题汇总.docx

    这道题目考察了 SQL 编程语言的基础知识,包括建表、插入数据、排序、连接和分组。题目要求使用 SQL 语句解决,输出结果为 userid-changjing 的形式。 * SQL 语句分析: 首先,创建一个名为 datafrog_test1 的表,...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    学习如何使用WHERE子句进行条件过滤,GROUP BY用于分组数据,HAVING来过滤分组后的结果,以及ORDER BY对结果进行排序。 2. **联接操作**:书中会详细介绍INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN等不同...

    sql2000分组统计

    在SQL Server 2000中,分组统计是一个核心的查询功能,它允许数据库管理员和开发者对数据进行聚合操作,以获取特定字段的汇总信息。分组统计通常涉及GROUP BY语句,配合COUNT(), SUM(), AVG(), MAX() 和 MIN()等聚合...

    数据分析实践 使用Excel和SQL进行数据分析 数据分析教程课件 数据分析实战课程 共94页.pdf

    本课程旨在教授如何使用Excel和SQL进行数据分析,覆盖了从基础知识到实战技巧的全面内容。 首先,课程介绍了数据分析的基础概念,包括其价值和前景。数据分析有助于企业发现潜在商机,通过数据可视化提升信息展示...

    SQL语句与数据透视表结合使用入门

    总结来说,SQL和数据透视表的结合使用能提供强大的数据分析能力。SQL擅长处理复杂的数据处理和筛选任务,而数据透视表则擅长于快速汇总和多角度查看数据。两者协同工作,能够帮助我们在海量数据中挖掘出有价值的洞察...

    SQL2005技术内幕:T-SQL查询书籍代码

    4. **分组与聚合**:GROUP BY和HAVING子句用于按一个或多个列对数据进行分组,并应用聚合函数。书中可能会展示如何使用这些功能进行数据汇总和分析。 5. **集合操作**:UNION、UNION ALL、INTERSECT和EXCEPT用于...

    Sql常用语句汇总

    根据给定的文件信息,以下是对SQL常用语句的详细知识点总结: ...以上是SQL中的一些常用语句和操作,掌握这些基础可以帮助开发者进行数据库的设计、管理和数据操作,提高数据处理的效率和安全性。

    SQL面试题汇总.pdf

    面试中,SQL相关的问题通常涵盖查询、数据操作、数据库设计、性能优化等多个方面。以下是对给定内容中涉及的一些SQL知识点的详细解释: 1. **标识符(IDENTITY)属性**: 在创建`testtable1`时,`id`字段被定义为`...

    数据库SQL基础知识

    数据库SQL基础知识是IT领域中至关重要的一环,尤其对于初学者来说,掌握好SQL语言是进入数据管理和分析世界的敲门砖。SQL(Structured Query Language),结构化查询语言,是用于管理和处理关系型数据库的标准语言。...

    数据库中如何分类、分组并总计SQL数据

    2. **分组数据**: `GROUP BY`子句用于将具有相同值的记录组合成一组。例如,如果我们想要统计每个邮政编码的客户数量,可以使用`GROUP BY ZIP`。`GROUP BY`与`SELECT`一起使用,但`SELECT`只能包含分组列或聚合...

    SQL语句基础教程。SQL语句基础教程

    它不存储数据,而是提供了一种查看和操作数据的不同方式,可以简化复杂的查询,隐藏敏感信息,或者提供汇总数据。 10. 存储过程:存储过程是一组预编译的SQL语句,可以封装在单个数据库对象中。它们允许你创建可...

    SQL经典基础语句大全

    这些SQL语句是构建和管理数据库的基础,无论是在简单的数据检索还是在复杂的业务逻辑实现中,都扮演着至关重要的角色。通过熟练掌握这些语句,你可以有效地操纵数据,实现高效的数据管理和分析。

    SQL 数据分析:销售数据的小计/合计/总计以及数据透视表

    学习过 SQL 的人都知道,使用聚合函数(AVG、SUM、COUNT、MIN/MAX 等)和分组操作(GROUP BY)可以对数据进行基本的统计分析,例如统计公司员工的人数、每个部门的平均月薪等。如果想要回顾这些基础概念,可以参考这...

    仿sqlserver数据库分组汇总

    模仿sqlserver数据库中的groupby分组数据,可直接在页面传入数据集合生成结果,,结果由console.log()输入,需要浏览器F12开发模式观看

    分组计算[按时间]通用[sql分组;C#分组]

    无论是使用SQL还是C#进行分组计算,目的都是为了更好地理解和分析数据。下面将详细介绍如何使用SQL和C#进行分组计算,并给出具体的示例。 #### SQL分组计算 SQL中的`GROUP BY`子句用于结合聚合函数(如`SUM()`, `...

    sql server 2012 reporting service 中制作分组折叠式报表

    在SQL Server 2012 Reporting Services中,创建分组折叠式报表是一项常见的任务,它有助于数据的组织和展示,让复杂的数据集变得易于理解和分析。分组折叠式报表允许用户根据特定字段对数据进行分类,并可以展开或...

    MS.SQL.Server.2008.技术内幕:T-SQL.查询.rar

    1. **基础查询**:如何使用SELECT语句从数据库中检索数据,包括选择字段、过滤记录(WHERE子句)、排序结果(ORDER BY子句)、分组数据(GROUP BY子句)和计算聚合值(如SUM、COUNT、AVG等)。 2. **联接操作**:内...

    pb通过sql语句实现分组小计统计

    在本文中,我们将深入探讨如何使用SQL语句实现分组小计统计,这是一个常见的需求,尤其是在数据分析、报表生成和业务洞察领域。我们将基于提供的部分代码示例,详细解释其背后的逻辑和技术要点。 ### SQL实现分组小...

Global site tag (gtag.js) - Google Analytics