MAP_AGG

map_agg(key, value)

功能描述

MAP_AGG
MAP_AGG
函数用于将键值对聚合成一个
MAP
MAP
类型的数据结构。该函数收集所有的键值对,并将它们组合成一个 Map,其中每个键对应一个值。

参数说明

  • key
    key
    :任意可比较基本类型的表达式,作为 Map 的键。
    • NULL
      NULL
      键会被忽略。
    • 重复的键会保留第一个出现的值。
  • value
    value
    :任意类型的表达式,作为 Map 的值。
    • value
      value
      可以是
      NULL
      NULL

返回类型

  • 返回
    map<key_type, value_type>
    map<key_type, value_type>
    类型(非空)。
  • 返回包含所有键值对的 Map。

注意事项

  • 如果所有
    key
    key
    都是
    NULL
    NULL
    ,返回空 Map
    {}
    {}
  • 如果输入为空集,返回空 Map
    {}
    {}
  • key
    key
    的顺序在 Map 中是不确定的,不要依赖顺序。
  • 重复
    key
    key
    的行为可能因实现而异,建议避免使用重复的
    key
    key

使用示例

  1. 基本用法:聚合键值对为 Map

SELECT map_agg(id, name) FROM VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie') AS t(id, name); +---------------------------------+ | map_agg(id, name) | +---------------------------------+ | {1:"Alice",2:"Bob",3:"Charlie"} | +---------------------------------+

  1. NULL key 会被忽略

SELECT map_agg(a, b) FROM VALUES (1, 'apple'), (2, 'hi'), (NULL, 'good'), (3, NULL) AS t(a, b); +--------------------------------+ | map_agg(a, b) | +--------------------------------+ | {1:"apple",2:"hi",3:null} | +--------------------------------+

  1. 重复的 key,保留第一个值

SELECT map_agg(a, b) FROM VALUES (1, 'apple'), (2, 'hi'), (1, 'pie') AS t(a, b); +-------------------------+ | map_agg(a, b) | +-------------------------+ | {1:"apple",2:"hi"} | +-------------------------+

  1. 所有 key 都是 NULL 时返回空 Map

SELECT map_agg(a, b) FROM VALUES (NULL, 'apple'), (NULL, 'banana') AS t(a, b); +----------------+ | map_agg(a, b) | +----------------+ | {} | +----------------+

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