【问题标题】:SQL query to insert aggregated data into existing column using columns from same table使用同一表中的列将聚合数据插入现有列的 SQL 查询
【发布时间】:2021-05-18 21:48:35
【问题描述】:

我在 sqlite 数据库中有一个表格,其中包含个人的收入、该个人的家庭标识符和家庭收入的空列。我正在尝试运行一个查询,该查询将根据返回按家庭标识符分组的收入总和的子查询来填写家庭收入。我的查询:

INSERT INTO customer_data (household_income)
    SELECT t.total
    FROM (SELECT household_id, sum(individual_income)
          FROM customer_data
          GROUP BY household_id
         ) t
    WHERE customer_data.household_id = t.household_id;

但我的查询没有说“找不到 customer_data.household_id”。我无法找到插入的数据来自同一个表的示例,并且需要子查询来获取基于分组的聚合。对我的方法有什么想法吗?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 您不应该像那样存储非规范化的数据。每次individual_income 发生更改时,您都需要更新新列

标签: sql sqlite subquery aggregation


【解决方案1】:

您需要update。看起来相关的子查询会做你想做的事:

UPDATE customer_data 
    SET household_income = (SELECT sum(cd2.individual_income)
                            FROM customer_data cd2
                            WHERE customer_data.household_id = cd2.household_id
                           );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2013-03-19
    • 2023-03-03
    相关资源
    最近更新 更多