【问题标题】:Combining similar records and calculating in SQL在 SQL 中组合相似的记录并计算
【发布时间】:2020-12-07 21:58:58
【问题描述】:

希望我想做的很简单:

我有一张像这样的表:

Geography Participants
01 Brooklyn 5
03 Brooklyn 6
06 Manhattan 2
09 Manhattan 7

我想做的是按我所知道的更大的群体(布鲁克林和曼哈顿)进行分组,并创建如下所示的新计数:

Geography Participants
Brooklyn 11
Manhattan 9

我可以创建一个临时视图/表并在使用“LIKE %X%”构造后对其进行操作,但我想跳过这一步。有没有办法做到这一点,还是我必须使用临时表?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 表格设计错误。它将两个字段组合成一列,您几乎不应该这样做。修复那个坏掉的设计(因为它真的是坏了)然后这个问题就变得容易了。

标签: mysql sql sql-like


【解决方案1】:

如果你想要从第四个字符开始的地理部分,你可以使用:

select substr(geography, 4) as geography, sum(participants) as participants
from t
group by substr(geography, 4);

如果不想重复这段代码,那就定义一个视图:

create view v_t as
    select substr(geography, 4) as geography, sum(participants) as participants
    from t
    group by substr(geography, 4);

【讨论】:

    【解决方案2】:

    我会使用substring_index 提取城市名称,然后按它分组并对参与者求和:

    SELECT   SUBSTRING_INDEX(geography, ' ', -1), SUM(participants)
    FROM     mytable
    GROUP BY SUBSTRING_INDEX(geography, ' ', -1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 2017-04-26
      • 1970-01-01
      • 2016-04-10
      • 2015-01-20
      相关资源
      最近更新 更多