PostgreSQL - 使用 AVG、MAX 和 MIN 进行标准化

Posted

技术标签:

【中文标题】PostgreSQL - 使用 AVG、MAX 和 MIN 进行标准化【英文标题】:PostgreSQL - Normalization using AVG, MAX, and MIN 【发布时间】:2017-11-01 15:43:17 【问题描述】:

我有一个 PostgreSQL 表,其中包含 1,634 条记录,每个位置都有一个“id”,每个灾难事件的受影响人数的“disaster(n)_a”列,以及标准化数量的“disaster2_an”列第二次灾害事件的受影响人员。

   id  | disaster1_a | disaster2_a | disaster2_an
--------------------------------------------------
1234567|      27     |      30     |      0
5687428|      58     |      87     |      0
5874658|      88     |     458     |      0
.......

为了更新“disaster2_an”,我必须使用两个灾难事件中的受影响人员数据来计算每个位置的标准化受影响人员数量。如何输入以下函数作为 SQL 语句来更新列“disaster2_an”?

disaster2_an = (disaster2_a - AVG(disaster2_a, disaster1_a))/
(MAX(disaster2_a, disaster1_a) - MIN(disaster2_a, disaster1_a))

【问题讨论】:

【参考方案1】:

我能够找到我的问题的答案。我只是分别用 GREATEST() 和 LEAST() 替换了 MAX() 和 MIN(),并执行了手动获取平均值的方法。

UPDATE TABLE tbl1
    SET disaster2_an = (disaster2_a - ((disaster2_a + disaster1_a)/2)) / (GREATEST(disaster2_a, disaster1_a) - LEAST(disaster2_a, disaster1_a));

【讨论】:

以上是关于PostgreSQL - 使用 AVG、MAX 和 MIN 进行标准化的主要内容,如果未能解决你的问题,请参考以下文章

使用基于 Avg 的 Max 和 Min 来确定最低平均成本和最高平均成本时出错(MySQL)

Redshift Postgresql - 如何解析嵌套的 JSON

PostgreSQL 常用函数

PostgreSQL 常用函数

在每个当前行和上一行 BigQuery 之间查找 MAX、AVG

来自输入文本文件的 Min Max 和 Avg