匹配两列中的重复条目以及具有> 1的重复条目,并为两者添加第三个值并添加它们

时间:2013-05-08 22:56:42

标签: mysql database

我有一个表格,其中包含:ID,FEATURE_NAME(可能是该城市的名称),STATE_ALPHA(两个字母的国家/地区标识符,如Alabama的“AL”)和POPULATION_DATA。

我需要:

  1. 查找具有相同FEATURE_NAME和STATE_ALPHA
  2. 的条目
  3. 在两个(或更多)外观中获取POPULATION_DATA的值并添加它们
  4. 记下所有加数来自POPULATION_DATA的总和。
  5. 示例:

    - ID !FEATURE NAME !  STATE_ALPHA  !  POPULATION DATA
    -  1   Woodland          WA             83 
    -  2   Woodland          WA            5426
    -  3   Vining            KS             354 
    -  4   Vining            KS             276
    -  5   Vining            KS            1450
    

    我需要得到的是:

    - ID !FEATURE NAME !  STATE_ALPHA  !  POPULATION DATA
    -  1   Woodland          WA            5509
    -  2   Woodland          WA            5509
    -  3   Vining            KS            2080 
    -  4   Vining            KS            2080
    -  5   Vining            KS            2080
    
    我用谷歌搜索了几个小时,甚至不知道从哪里开始。此外,我将在不在原始表上的视图上运行该脚本,我不知道它是否会改变任何内容。请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以使用聚合和联接来执行此操作:

select t.id, t.feature_name, t.state_alpha, sumpop as Population_Data
from t join
     (select feature_name, state_alpha, sum(population_data) as sumpop
      from t
      group by feature_name, state_alpha
     ) fs
     on t.feature_name = fs.feature_name and
        t.state_alpha = fs.state_alpha;

聚合对总体进行求和(在子查询fs中)。此结果将重新连接到原始数据。

答案 1 :(得分:0)

如果我理解您的问题,那么简单的查询应该适用于表名为tablename

的情况
SELECT ID, FEATURE_NAME, STATE_ALPHA, POPULATION_DATA FROM tablename
FROM tablename
GROUP BY FEATURE_NAME, STATE_ALPHA