MAX 函数

max([DISTINCT] expr) [FILTER (WHERE condition)]

功能描述

MAX
MAX
函数用于从一组数据中找出最大值。该函数适用于多种数据类型,包括数值型、时间型和字符串型等。

参数说明

  • expr
    expr
    : 可比较的数据类型,支持的类型包括:
    • 数值类型:
      TINYINT
      TINYINT
      SMALLINT
      SMALLINT
      INT
      INT
      BIGINT
      BIGINT
      FLOAT
      FLOAT
      DOUBLE
      DOUBLE
      DECIMAL
      DECIMAL
    • 时间类型:
      DATE
      DATE
      TIMESTAMP
      TIMESTAMP
    • 字符串类型:
      CHAR
      CHAR
      VARCHAR
      VARCHAR
      STRING
      STRING
      BINARY
      BINARY
  • DISTINCT
    DISTINCT
    : 可选参数,用于指定是否去除重复值。若设置
    DISTINCT
    DISTINCT
    ,则返回去重后的集合中的最大值。注意,对于数值型数据,
    DISTINCT
    DISTINCT
    并不会对结果产生影响。

返回值

  • 返回值的类型与输入参数
    expr
    expr
    的类型相同。
  • 如果输入参数中包含
    NULL
    NULL
    值,则这些值不会参与计算。
  • 设置
    DISTINCT
    DISTINCT
    参数不会影响数值型数据的结果。

使用示例

  1. 求数值型数据的最大值:

SELECT max(col) FROM VALUES (10), (50), (20), (NULL) AS tab(col); +------------+ | `max`(col) | +------------+ | 50 | +------------+

  1. 求时间型数据的最大值:

SELECT max(col) FROM VALUES ('2023-01-01'), ('2022-12-31'), ('2023-02-01') AS tab(col); +------------+ | `max`(col) | +------------+ | 2023-02-01 | +------------+

  1. 求字符串型数据的最大值:

SELECT max(col) FROM VALUES ('apple'), ('banana'), ('cherry') AS tab(col); +------------+ | `max`(col) | +------------+ | cherry | +------------+

  1. 使用
    DISTINCT
    DISTINCT
    参数求数值型数据的最大值(对结果无影响):

SELECT max(DISTINCT col) FROM VALUES (10), (50), (20), (NULL), (10) AS tab(col); +---------------------+ | `max`(DISTINCT col) | +---------------------+ | 50 | +---------------------+

  1. 使用
    DISTINCT
    DISTINCT
    参数求字符串型数据的最大值:

SELECT max(DISTINCT col) FROM VALUES ('apple'), ('banana'), ('cherry'), ('apple') AS tab(col); +---------------------+ | `max`(DISTINCT col) | +---------------------+ | cherry | +---------------------+

  1. 使用 FILTER 子句条件性地找出最大值:

SELECT max(col) FILTER (WHERE col < 40) FROM VALUES (10), (20), (50), (NULL) AS tab(col); +---------------------------------------+ | `max`(col) FILTER (WHERE (col < 40)) | +---------------------------------------+ | 20 | +---------------------------------------+

  1. 结合 FILTER 子句和 DISTINCT 找出条件最大值:

SELECT max(DISTINCT col) FILTER (WHERE col != 'cherry') FROM VALUES ('apple'), ('banana'), ('cherry'), ('apple') AS tab(col); +--------------------------------------------------------------+ | `max`(DISTINCT col) FILTER (WHERE (NOT (col = 'cherry'))) | +--------------------------------------------------------------+ | banana | +--------------------------------------------------------------+

联系我们
预约咨询
微信咨询
电话咨询