GROUP BY с использованием подстроки? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть следующая таблица:

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?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Рассмотрим:

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

substr(id, 4, 4) извлекает соответствующую часть строки (4 символа, начиная с 4-го символа в строке), которую затем можно использовать для группировки).

Демонстрация на DB Fiddle :

yr   | cnt
:--- | --:
2017 |   4
2018 |   1
2019 |   2
2020 |   1
0 голосов
/ 20 апреля 2020

Попробуйте это с substring_index.

select 
   substring_index(substring_index(mt, "-",  -2), "-", 1) as year, 
   count(*) as count
from yourTable
group by 
    year
...