【问题标题】:How to group by year from a concatenated column如何从连接列按年份分组
【发布时间】:2021-12-28 17:16:58
【问题描述】:

有一个这样的 MySQL 表,其中 id 是具有 Ymd 格式(插入行的那一刻)的日期与增量 id 的串联。

|     id      |   weight  |
| 20200128001 |    100    |
| 20200601002 |    250    |
| 20201208003 |    300    |
| 20210128001 |    150    |
| 20210601002 |    200    |
| 20211208003 |    350    |

按我正在制作的一年计算“重量”的总和:

SELECT sum(weight) as weight FROM `table` WHERE id LIKE '2020%';

在这种情况下导致:

650

我怎样才能使它按年份生成权重表,而不是按每个可能的年份进行查询,导致这种情况为:

| date |  weight  |
| 2020 |    650   |
| 2021 |    700   |

【问题讨论】:

    标签: mysql sql date distinct


    【解决方案1】:

    使用 MySQL 中的字符串处理函数之一,例如 left()

    SELECT LEFT(id,4) as Year, SUM(weight) as Weight
    FROM `table`
    GROUP BY LEFT(id,4)
    ORDER BY LEFT(id,4)
    

    如果你想将结果限制在这 2 年

    SELECT LEFT(id,4) as Year, SUM(weight) as Weight
    FROM `table`
    WHERE LEFT(id,4) IN (2021, 2022)
    GROUP BY LEFT(id,4)
    ORDER BY LEFT(id,4)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多