首页 > 解决方案 > GROUP BY 使用子字符串?

问题描述

我有下表:

t1:
id                item
--------------------------
XR-2017-432       car
XR-2019-736       car
BC-2017-847       motorbike
XR-2017-937       car
BC-2020-758       motorbike
GK-2019-823       boat
GK-2017-928       boat
XR-2018-438       car

我想计算每年发生的次数。查询的答案应该是这样的:

result:
year        count
-------------------
2017        4
2018        1
2019        2
2020        1

如何使用 MySQL 查询来做到这一点?

标签: mysqlsqlstringgroup-bycount

解决方案


考虑:

select substr(id, 4, 4) yr, count(*) cnt
from mytable
group by yr
order by yr

substr(id, 4, 4)提取字符串的相关部分(从字符串中的第 4 个字符开始的 4 个字符),然后您可以将其用于分组)。

DB Fiddle 上的演示

年 | cnt
:--- | --:
2017 | 4
2018 | 1
2019 | 2
2020 | 1

推荐阅读