首页
技术小册
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基础教程(上) 在SQL的世界里,数据的处理与分析离不开对数值的计算与比较。本章节将深入探讨SQL中如何高效地进行数值计算以及如何筛选出数据中的最小值,这些技能对于数据库管理员、数据分析师以及任何需要处理大量数据的专业人士而言,都是不可或缺的基本功。我们将从基础的算术运算讲起,逐步深入到聚合函数的使用,特别是如何找到数据集中的最小值。 #### 一、算术运算基础 在SQL中,进行基本的算术运算是非常直接的。SQL支持四种基本的算术运算符:加(+)、减(-)、乘(*)和除(/)。这些运算符可以直接在SELECT语句的字段列表中使用,对表中的数据进行计算。 ##### 示例1:计算薪资增长 假设有一个名为`employees`的表,其中包含`salary`(薪资)和`bonus`(奖金)两个字段,我们想要计算每位员工的总收入(薪资加奖金)。 ```sql SELECT employee_id, salary, bonus, (salary + bonus) AS total_income FROM employees; ``` 这个查询会返回每个员工的ID、薪资、奖金以及他们的总收入(`total_income`),其中`AS`关键字用于给计算结果命名。 ##### 示例2:计算折扣价格 如果`products`表中有`price`(价格)和`discount_rate`(折扣率,以小数形式表示,如0.1代表10%的折扣),我们可以计算打折后的价格。 ```sql SELECT product_id, price, discount_rate, price * (1 - discount_rate) AS discounted_price FROM products; ``` 这里,我们使用`1 - discount_rate`来计算折扣后的价格系数,然后乘以原价得到折扣价格。 #### 二、使用聚合函数计算小值 聚合函数是SQL中用于对一组值执行计算并返回单个值的函数。在寻找数据集中的最小值时,`MIN()`函数是最直接的工具。 ##### 示例3:查找最低薪资 继续以`employees`表为例,如果我们想要找出公司中薪资最低的员工薪资是多少,可以使用`MIN()`函数。 ```sql SELECT MIN(salary) AS lowest_salary FROM employees; ``` 这个查询将返回`employees`表中所有员工的最低薪资。 ##### 示例4:分组计算最小值 假设我们还想按部门(`department_id`)来查看每个部门的最低薪资,这时可以结合`GROUP BY`语句使用`MIN()`函数。 ```sql SELECT department_id, MIN(salary) AS lowest_salary_per_department FROM employees GROUP BY department_id; ``` 这个查询会按`department_id`分组,并计算每个部门的最低薪资。 #### 三、高级应用:结合条件与多表查询 在实际应用中,我们可能需要结合WHERE子句或JOIN操作来进一步筛选或关联数据,以便更精确地计算或找到所需的最小值。 ##### 示例5:查找特定条件下的最小值 如果我们只对销售部门的员工感兴趣,并想找出这些员工中的最低薪资,可以这样做: ```sql SELECT MIN(salary) AS lowest_salary_sales FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales'); ``` 这里假设`departments`表存在,且包含`department_id`和`department_name`字段。首先,子查询`SELECT department_id FROM departments WHERE department_name = 'Sales'`找到销售部门的ID,然后主查询基于这个ID筛选出销售部门的员工,并计算他们的最低薪资。 ##### 示例6:跨表计算最小值 如果`employees`表和`departments`表通过`department_id`关联,且我们想要知道哪个部门的员工薪资整体水平最低(即部门内最低薪资最低),可以这样做: ```sql SELECT d.department_name, MIN(e.salary) AS lowest_salary_in_department FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name ORDER BY lowest_salary_in_department ASC LIMIT 1; ``` 这个查询首先通过JOIN操作将`employees`表和`departments`表连接起来,然后按部门分组计算每个部门的最低薪资,并通过`ORDER BY`和`LIMIT`子句找到最低薪资最低的部门及其薪资。 #### 四、总结 在本章中,我们学习了如何在SQL中进行基本的算术运算,以及如何使用`MIN()`函数来找到数据集中的最小值。我们还探讨了如何通过结合WHERE子句、GROUP BY语句以及多表JOIN操作来执行更复杂的查询,以满足不同场景下的需求。掌握这些技能,对于进行数据分析、报表生成以及数据库管理等工作至关重要。随着你对SQL的深入学习,你将能够构建更加复杂和强大的查询,以高效地处理和分析大量数据。
上一篇:
计算平均值
下一篇:
使用聚合函数删除重复值(关键字DISTINCT)
该分类下的相关小册推荐:
SQL基础教程(下)
SQL基础教程(中)
高性能的Postgres SQL
PostgreSQL入门教程