如何从连接列按年份分组
Posted
技术标签:
【中文标题】如何从连接列按年份分组【英文标题】: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 |
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于如何从连接列按年份分组的主要内容,如果未能解决你的问题,请参考以下文章
pandas/matplotlib 中一列按另一列分组的箱形图