描述一个postgresql中聚集函数array_agg、string_agg、bit_and、bit_or的应用场景

描述一个postgresql中聚集函数array_agg、string_agg、bit_and、bit_or的应用场景

聚集函数从一个输入值的集合计算一个单一结果。


1.1 业务场景

业务场景如下图所示:

  1. 销售区域可以有多个渠道类型、多个负责部门、多个负责人
  2. 销售区域 + 多个渠道类型 形成唯一值。(新增、编辑时需要做数据校验)
    描述一个postgresql中聚集函数array_agg、string_agg、bit_and、bit_or的应用场景_第1张图片

第一个问题就非常适合使用 string_agg() 函数。针对第二个问题,使用bit_andbit_or 的和作为一个唯一标志。减少查询的复杂性


1.2 函数

除了count以外,这些函数在没有行被选中时返回空值。尤其是sum函数在没有输入行时返回空值,而不是零,并且array_agg在这种情况返回空值而不是一个空数组。必要时可以用coalesce把空值替换成零或一个空数组。

参考

sql的具体写法,可以参考中文文档,不做描述: 聚集函数 http://www.postgres.cn/docs/9.6/functions-aggregate.html

你可能感兴趣的:(PostgreSQL)