MODE

简介

MODE
MODE
函数用于返回一组数据中出现次数最多的值(众数)。当多个值出现频次相同时,返回哪个值不确定。

语法

MODE(expr) [FILTER (WHERE condition)]

参数

  • expr
    expr
    : 任意可比较类型的表达式。

返回结果

  • 返回类型与
    expr
    expr
    的类型一致。
  • 忽略
    NULL
    NULL
    值,
    NULL
    NULL
    不参与频次统计。
  • 若所有值均为
    NULL
    NULL
    ,则返回
    NULL
    NULL
  • 当多个值出现频次相同时,返回结果不确定(非确定性函数),不要在示例或业务逻辑中依赖具体返回值。

示例

  1. 基础用法,返回出现次数最多的值:

SELECT MODE(v) FROM (VALUES (1),(2),(2),(3)) t(v); +---------+ | mode(v) | +---------+ | 2 | +---------+

  1. 结合 GROUP BY 按分组计算众数:

SELECT dept, MODE(score) FROM (VALUES ('A', 90), ('A', 90), ('A', 80), ('B', 70), ('B', 70), ('B', 90)) t(dept, score) GROUP BY dept; +------+-------------+ | dept | mode(score) | +------+-------------+ | A | 90 | | B | 70 | +------+-------------+

  1. 平局时结果不确定——多个值频次相同时,返回值由引擎内部决定,不保证固定顺序:

-- 1 和 2 各出现 2 次,返回哪个值不确定 SELECT MODE(v) FROM (VALUES (1),(1),(2),(2)) t(v); +---------+ | mode(v) | +---------+ | 1 | +---------+

  1. 使用 FILTER 子句条件性地计算众数:

SELECT MODE(v) FILTER (WHERE v > 1) FROM (VALUES (1),(2),(2),(3)) t(v); +----------------------------------+ | mode(v) FILTER (WHERE (v > 1)) | +----------------------------------+ | 2 | +----------------------------------+

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