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

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

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


1.1 业务场景

业务场景如下图所示:

  1. 销售区域可以有多个渠道类型、多个负责部门、多个负责人
  2. 销售区域 + 多个渠道类型 形成唯一值。(新增、编辑时需要做数据校验)
    在这里插入图片描述

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


1.2 函数

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

参考

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

发布了274 篇原创文章 · 获赞 119 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_31156277/article/details/90448685