摘要:本教程向您展示如何使用 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函数查找集合的最大值。
了解