首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 章节:计算合计值 在数据库管理和数据分析的广阔领域中,计算合计值是一项基础而至关重要的技能。无论是为了统计销售总额、计算库存总量,还是分析用户行为数据,合计值都为我们提供了数据集的总体概览,是决策支持系统中不可或缺的一部分。本章节将深入探讨SQL中计算合计值的方法,涵盖基本的聚合函数、分组(GROUP BY)语句的使用,以及如何在复杂查询中应用合计值计算。 #### 一、聚合函数简介 在SQL中,聚合函数用于对一组值执行计算,并返回单个值。这些函数对于计算合计值至关重要。最常用的聚合函数包括: - **SUM()**:计算数值列中值的总和。 - **AVG()**:计算数值列中值的平均值。 - **COUNT()**:计算行数或列中非NULL值的数量。 - **MAX()** 和 **MIN()**:分别找出列中的最大值和最小值。 #### 二、使用SUM()计算合计值 `SUM()` 函数是计算合计值最直接的工具。它适用于数值型列,能够累加该列中的所有值。 **示例1:计算销售额合计** 假设有一个名为`sales`的表,其中包含`sale_amount`(销售额)列,我们可以使用以下SQL语句来计算总销售额: ```sql SELECT SUM(sale_amount) AS total_sales FROM sales; ``` 这条语句会返回`sales`表中所有记录的`sale_amount`之和,并将结果列命名为`total_sales`。 **示例2:结合WHERE子句使用SUM()** 如果我们只对特定条件下的销售额感兴趣,可以结合`WHERE`子句来过滤数据。 ```sql SELECT SUM(sale_amount) AS total_sales_2023 FROM sales WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31'; ``` 此查询计算了2023年全年的总销售额。 #### 三、分组计算合计值 在实际应用中,我们往往需要根据某个或多个列的值对记录进行分组,然后计算每个组的合计值。这时,`GROUP BY`语句就显得尤为重要。 **示例3:按产品计算销售额合计** 假设`sales`表还包含`product_id`(产品ID)列,我们想要知道每个产品的总销售额。 ```sql SELECT product_id, SUM(sale_amount) AS total_sales_per_product FROM sales GROUP BY product_id; ``` 这条语句按`product_id`分组,并计算每个产品的总销售额。 **注意**:在使用`GROUP BY`时,SELECT列表中未包含在`GROUP BY`子句中的列必须被包含在聚合函数中。 #### 四、结合多个聚合函数 在单个查询中,我们可以结合使用多个聚合函数来获取更全面的数据概览。 **示例4:计算销售额、平均销售额和最大销售额** ```sql SELECT product_id, SUM(sale_amount) AS total_sales_per_product, AVG(sale_amount) AS average_sale_per_product, MAX(sale_amount) AS max_sale_per_product FROM sales GROUP BY product_id; ``` 这个查询不仅计算了每个产品的总销售额,还计算了平均销售额和最大单笔销售额。 #### 五、使用HAVING子句过滤分组结果 `HAVING`子句与`WHERE`子句类似,但它用于过滤分组后的结果,而不是原始记录。这意味着你可以在聚合函数的结果上应用条件。 **示例5:找出销售额超过10000的产品** ```sql SELECT product_id, SUM(sale_amount) AS total_sales_per_product FROM sales GROUP BY product_id HAVING SUM(sale_amount) > 10000; ``` 这个查询找出了总销售额超过10000的所有产品。 #### 六、高级应用:窗口函数与合计值 虽然窗口函数(如`ROW_NUMBER()`, `RANK()`, `SUM() OVER()`等)不直接用于计算整个数据集的合计值,但它们允许我们在不分组数据的情况下,对特定范围内的记录进行聚合计算,这在某些复杂分析中非常有用。 **示例6:计算每个产品的累计销售额** ```sql SELECT product_id, sale_date, sale_amount, SUM(sale_amount) OVER (PARTITION BY product_id ORDER BY sale_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sales FROM sales; ``` 这个查询使用了`SUM()`窗口函数来计算每个产品按销售日期排序的累计销售额。`PARTITION BY`子句指定了分区依据(这里是`product_id`),而`ORDER BY`和`ROWS BETWEEN`子句定义了窗口内行的范围。 #### 七、总结 计算合计值是SQL数据分析中的一项基本技能,它帮助我们快速获取数据集的总体概览。通过掌握聚合函数、`GROUP BY`语句、`HAVING`子句以及窗口函数的使用,我们可以灵活地处理各种合计值计算需求,为数据分析和决策提供有力支持。无论是在日常工作中处理销售数据、库存统计,还是在更复杂的业务分析场景中,这些技能都将发挥重要作用。
上一篇:
计算NULL之外的数据的行数
下一篇:
计算平均值
该分类下的相关小册推荐:
SQL基础教程(下)
高性能的Postgres SQL
PostgreSQL入门教程
SQL基础教程(中)