导航菜单
首页 >  最值查找maxmin及类似函数用法与说明  > PostgreSQL 教程: max 函数: 获取集合中的最大值

PostgreSQL 教程: max 函数: 获取集合中的最大值

摘要:本教程向您展示如何使用 PostgreSQL 的MAX()函数获取集合的最大值。

目录

PostgreSQL MAX 函数简介

PostgreSQL 的MAX函数是一个聚合函数,它返回一组值中的最大值。MAX 函数在很多情况下都很有用。例如,您可以使用MAX函数查找工资最高的员工或查找最昂贵的产品等。

MAX函数的语法如下:

MAX(expression);

您不仅可以在 SELECT 列表子句中使用MAX函数,还可以在 WHERE 和 HAVING 子句中使用该函数。让我们看一下使用MAX函数的一些示例。

PostgreSQL MAX 函数示例

让我们查看一下示例数据库中的payment表。

以下查询使用MAX()函数查找payment表中客户支付的最高金额:

SELECT MAX(amount)FROM payment;

子查询中的 MAX 函数

要获取其他信息以及最高付款,您可以使用子查询,如下所示:

SELECT * FROM paymentWHERE amount = (SELECT MAX (amount)FROM payment);

首先,子查询使用MAX()函数返回最高付款,然后外部查询检索金额等于子查询返回的最高付款的所有行。

查询的输出如下:

下图说明了 PostgreSQL 执行查询的步骤:

结合 GROUP BY 子句使用 MAX 函数

您可以将MAX 函数与GROUP BY子句结合起来以获得每个组的最大值。例如,以下查询获取每个客户支付的最高付款。

SELECTcustomer_id,MAX (amount)FROMpaymentGROUP BYcustomer_id;

结合 HAVING 子句使用 MAX 函数

如果在 HAVING 子句中使用MAX()函数,则可以对组应用过滤器。

例如,以下查询仅选择每个客户支付的最高付款,且付款金额大于8.99。

SELECTcustomer_id,MAX (amount)FROMpaymentGROUP BYcustomer_idHAVING MAX(amount) > 8.99

从两列或多列中查找最大值

首先,创建一个新表,名为ranks,该表由四列组成:第一列存储用户 ID,其他三列存储从 1 到 3 的排名。

DROP TABLE IF EXISTS ranks;CREATE TABLE ranks (user_id INT PRIMARY KEY,rank_1 INT NOT NULL,rank_2 INT NOT NULL,rank_3 INT NOT NULL);

其次,插入示例数据到ranks表中,如下所示:

INSERT INTO ranksVALUES(1, 6, 3, 5),(2, 2, 8, 5),(3, 5, 9, 8);

如何获得每个用户的最大排名,如下图所示:

要实现这一点,您可以使用GREATEST()函数而不是MAX函数。GREATEST函数返回值列表中的最大值。

SELECTuser_id,GREATEST (rank_1, rank_2, rank_3) AS largest_rankFROMranks;

在本教程中,您学习了如何使用 PostgreSQL 的MAX函数查找集合的最大值。

了解

相关推荐: