九月 7, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的MIN()
函数来获取集合的最小值。
目录
PostgreSQL MIN 函数简介
PostgreSQL 的MIN()
函数是一个聚合函数,返回一组值中的最小值。
要查找表列中的最小值,请将列名称传递给MIN()
函数。列的数据类型可以是 number、string 或任何可进行比较的类型。
MIN()
函数的语法如下:
SELECT
MIN(expression)
FROM
table_expression
...;
与AVG()
、COUNT()
和SUM()
函数不同,DISTINCT
选项对MIN()
函数没有任何影响。
PostgreSQL MIN() 函数示例
我们将使用dvdrental 示例数据库中的film
、film_category
和category
表进行演示。
1) 在 SELECT 列表子句中使用 MIN 函数
以下示例使用MIN()
函数从film
表的rental_rate
列中获取最低出租率:
SELECT
MIN (rental_rate)
FROM
film;
查询返回 0.99,即最低出租率。
2) 在子查询中使用 MIN 函数
要获取出租率最低的电影,请使用以下查询:
SELECT
film_id,
title,
rental_rate
FROM
film
WHERE
rental_rate = (
SELECT MIN(rental_rate)
FROM film
);
怎么运行的。
- 首先,子查询查找最低的租金率。
- 然后,外部查询检索出租率等于子查询返回的最低出租率的电影。
3) 将 MIN 函数与 GROUP BY 子句一起使用
在实践中,您经常使用带有GROUP BY
子句的MIN
函数来查找每组中的最小值。
以下语句使用带有GROUP BY
子句的MIN()
函数按类别查找电影的最低重置成本:
SELECT
name category,
MIN(replacement_cost) replacement_cost
FROM category
INNER JOIN film_category USING (category_id)
INNER JOIN film USING (film_id)
GROUP BY name
ORDER BY name;
4) 将 MIN 函数与 HAVING 子句一起使用
可以使用 HAVING 子句中的MIN
函数来过滤最小值符合特定条件的组。
以下查询使用MIN()
函数查找按类别分组的电影的最低重置成本,并仅选择重置成本大于的组9.99
。
SELECT
name category,
MIN(replacement_cost) replacement_cost
FROM category
INNER JOIN film_category USING (category_id)
INNER JOIN film USING (film_id)
GROUP BY name
HAVING MIN(replacement_cost) > 9.99
ORDER BY name;
5) 将 MIN 函数与其他聚合函数一起使用
可以将MIN()
函数与其他聚合函数一起使用,例如同一查询中的MAX()
函数。
以下示例使用MIN()
和MAX()
函数按类别查找最短和最长的电影:
SELECT
name category,
MIN(length) min_length,
MAX(length) max_length
FROM category
INNER JOIN film_category USING (category_id)
INNER JOIN film USING (film_id)
GROUP BY name
ORDER BY name;
6) 从两列或多列中查找最小值
假设您有一个ranks
表,如下:
CREATE TABLE ranks (
user_id INT PRIMARY KEY,
rank_1 int4 NOT NULL,
rank_2 int4 NOT NULL,
rank_3 int4 NOT NULL
);
及其样例数据:
INSERT INTO ranks
VALUES
(1, 6, 3, 5),
(2, 2, 8, 5),
(3, 5, 9, 8);
假设您需要找到最小排名的用户:
在这种情况下,您无法使用MIN()
函数,因为MIN()
函数应用于行,而不是列。要查找两列或多列的最小值,请使用LEAST()
函数:
SELECT
user_id,
LEAST (rank_1, rank_2, rank_3) AS lowest_rank
FROM
ranks;
查询返回的结果符合我们的预期。
总结
- 使用
MIN()
函数查找一组值中的最小值。 - 使用
MIN()
函数和GROUP BY
子句查找一组值中的最小值。 - 使用
LEAST()
函数查找列之间的最小值。
了解更多
PostgreSQL 教程:聚合函数
PostgreSQL 文档:聚集函数