Как выбрать и сгруппировать записи по шаблону?

У меня есть таблица
ID | params

И в ней такие записи
1 | {"name":"u1", "type":"junior"}
2 | {"name":"u2", "type":"senior"}
3 | {"name":"u3", "type":"junior"}

На выходе необходимо получить примерно такое

junior - 2 записи
senior - 1 запись
middle - 0 записей

Все усложняется тем, что я не знаю какие значения "type" есть в таблице, и поэтому добавить в запрос %junior%, %senior% я не могу. Не получается у меня придумать запрос, который будет считать количество записей и группировать их по значению параметра "type" в колонке "params".

Какие функции надо использовать в запросе, чтобы получить это?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT COUNT(*), 
       SUBSTRING_INDEX(SUBSTRING_INDEX(`params`, '"', -2), '"', 1) AS `type`
  FROM `table`
  GROUP BY `type`

P.S. Поправлено
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@nApoBo3
Все зависит от СУБД. Если она найтивно умеет работать с json то необходимо использовать предоставленные функции, если нет, то писать свой парсер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы