【问题标题】:PostgreSQL - Normalization using AVG, MAX, and MINPostgreSQL - 使用 AVG、MAX 和 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))

【问题讨论】:

    标签: postgresql max average normalization min


    【解决方案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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2013-04-24
      • 1970-01-01
      • 2023-03-13
      • 2021-01-23
      相关资源
      最近更新 更多