SQL 中的 MIN 和 MAX 以及常见函数详解及示例演示

SQL MIN() 和 MAX() 函数

SQL中的MIN()函数和MAX()函数用于查找所选列的最小值和最大值,分别。以下是它们的用法和示例:

MIN() 函数

MIN()函数返回所选列的最小值。

示例:

查找Products表中的最低价格:

sql 复制代码
SELECT MIN(Price)
FROM Products;

MAX() 函数

MAX()函数返回所选列的最大值。

示例:

查找Products表中的最高价格:

sql 复制代码
SELECT MAX(Price)
FROM Products;

语法

MIN()和MAX()函数的一般语法如下:

sql 复制代码
SELECT MIN(column_name)
FROM table_name
WHERE condition;

SELECT MAX(column_name)
FROM table_name
WHERE condition;

演示数据库

以下是示例中使用的Products表的一部分:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

设置列名(别名)

当使用MIN()或MAX()函数时,返回的列默认将命名为MIN(field)或MAX(field)。要为列指定新名称,请使用AS关键字:

示例:

sql 复制代码
SELECT MIN(Price) AS SmallestPrice
FROM Products;

这将返回名为"SmallestPrice"的列,其中包含Products表中的最低价格。

SQL COUNT() 函数

SQL中的COUNT()函数用于返回符合指定条件的行数,通常用于统计行的数量。以下是它的用法和示例:

示例

查找Products表中的产品总数:

sql 复制代码
SELECT COUNT(*)
FROM Products;

语法

COUNT()函数的一般语法如下:

sql 复制代码
SELECT COUNT(column_name)
FROM table_name
WHERE condition;

演示数据库

以下是示例中使用的Products表的一部分:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

添加 WHERE 子句

您可以添加WHERE子句以指定条件:

示例

查找价格高于 20 的产品数量:

sql 复制代码
SELECT COUNT(ProductID)
FROM Products
WHERE Price > 20;

指定列名

您可以指定列名而不是使用星号(*)。

如果指定列名,将不会计算NULL值。

示例

查找ProductName不为NULL的产品数量:

sql 复制代码
SELECT COUNT(ProductName)
FROM Products;

如果表中包含NULL值,您可以使用IS NOT NULL条件来排除NULL值。例如:

sql 复制代码
SELECT COUNT(ProductName)
FROM Products
WHERE ProductName IS NOT NULL;

忽略重复项

您可以使用COUNT函数中的DISTINCT关键字来忽略重复项。

如果指定DISTINCT,具有相同值的行将被计为一行。

示例

Products表中有多少不同的价格:

sql 复制代码
SELECT COUNT(DISTINCT Price)
FROM Products;

使用别名

您可以使用AS关键字为计数列指定别名。

示例

将计数列命名为 "记录数":

sql 复制代码
SELECT COUNT(*) AS "记录数"
FROM Products;

使用别名可以使结果集的列名更具可读性。

SQL SUM() 函数

SQL中的SUM()函数用于返回数值列的总和,通常用于计算某一列的总值。以下是它的用法和示例:

示例

返回OrderDetails表中所有Quantity字段的总和:

sql 复制代码
SELECT SUM(Quantity)
FROM OrderDetails;

语法

SUM()函数的一般语法如下:

sql 复制代码
SELECT SUM(column_name)
FROM table_name
WHERE condition;

演示数据库

以下是示例中使用的OrderDetails表的一部分:

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

添加 WHERE 子句

您可以添加WHERE子句以指定条件:

示例

返回具有ProductID为11的产品所生成的订单数量:

sql 复制代码
SELECT SUM(Quantity)
FROM OrderDetails
WHERE ProductID = 11;

使用别名

您可以使用AS关键字为总结列指定别名。

示例

将列命名为 "总计":

sql 复制代码
SELECT SUM(Quantity) AS total
FROM OrderDetails;

使用别名可以使结果集的列名更具可读性。

使用表达式的 SUM()

SUM()函数内的参数也可以是一个表达式。

如果我们假设OrderDetails列中的每个产品价格为10美元,我们可以通过将每个数量乘以10来找到以美元计算的总收入:

示例

SUM()括号内使用表达式:

sql 复制代码
SELECT SUM(Quantity * 10)
FROM OrderDetails;

我们还可以将OrderDetails表与Products表连接以找到实际金额,而不是假定为10美元:

示例

OrderDetailsProducts连接,并使用SUM()查找总金额:

sql 复制代码
SELECT SUM(Price * Quantity)
FROM OrderDetails
LEFT JOIN Products ON OrderDetails.ProductID = Products.ProductID;

SQL AVG() 函数

SQL中的AVG()函数用于返回数值列的平均值。通常,它用于计算某一列的平均值。以下是AVG()函数的用法和示例:

示例

查找所有产品的平均价格:

sql 复制代码
SELECT AVG(Price)
FROM Products;

语法

AVG()函数的一般语法如下:

sql 复制代码
SELECT AVG(column_name)
FROM table_name
WHERE condition;

演示数据库

以下是示例中使用的Products表的一部分:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

添加 WHERE 子句

您可以添加WHERE子句以指定条件:

示例

返回类别1中产品的平均价格:

sql 复制代码
SELECT AVG(Price)
FROM Products
WHERE CategoryID = 1;

使用别名

您可以使用AS关键字为平均列指定别名。

示例

将列命名为 "平均价格":

sql 复制代码
SELECT AVG(Price) AS [平均价格]
FROM Products;

高于平均价格

要列出所有价格高于平均价格的记录,我们可以在子查询中使用AVG()函数:

示例

返回价格高于平均价格的所有产品:

sql 复制代码
SELECT * FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);

这将返回所有价格高于平均价格的产品。

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

相关推荐
java1234_小锋24 分钟前
Spring IoC的实现机制是什么?
java·后端·spring
喵个咪34 分钟前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:JWT 集成指南
后端·go
绝不收费—免费看不了了联系我1 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
喵个咪1 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:OPA 集成指南:从原理到实践
后端·go
GSDjisidi2 小时前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展
Victor3562 小时前
Netty(11) Netty的心跳机制是什么?为什么需要它?
后端
Victor3562 小时前
Netty(12)Netty支持哪些协议和传输方式?
后端
无限大62 小时前
为什么电脑需要"内存"和"硬盘"?——存储金字塔的秘密
后端
ovensi3 小时前
Docker+NestJS+ELK:从零搭建全链路日志监控系统
后端·nestjs
武子康3 小时前
大数据-184 Elasticsearch Doc Values 机制详解:列式存储如何支撑排序/聚合/脚本
大数据·后端·elasticsearch