Количество после удаления определенного символа в столбце - SQL - PullRequest
0 голосов
/ 02 марта 2020

У меня есть таблица (staffs_table) со следующими данными:

name               profession
------------------------------
Corbin             Human Resources|Accountant
Cort               Programmer|Receptionist|Helpdesk

Я хочу подсчитать количество человек в каждой профессии, чтобы мои результаты были следующими;

profession             number_of_staffs
---------------------------------------
Human Resources            1
Accountant                 1 
Programmer                 1
Receptionist               1
Helpdesk                   1

Я попытался выполнить следующий запрос SQL, но безуспешно;

SELECT profession, COUNT(*) AS number_of_staffs FROM staffs_table GROUP BY profession ORDER BY COUNT(*) DESC;

ВЫХОД:

profession                   number_of_staffs
---------------------------------------------
Human Resources|Accountant            1
Programmer|Receptionist|Helpdesk      1 

Также попробовал следующее ;

SELECT staffs_table.name,
SUBSTRING_INDEX(SUBSTRING_INDEX(staffs_table.profession, '|', numbers.n), '|', -1) profession
FROM
  numbers INNER JOIN staffs_table
  ON CHAR_LENGTH(staffs_table.profession)
     -CHAR_LENGTH(REPLACE(staffs_table.profession, '|', ''))>=numbers.n-1

ВЫХОД:

name               profession
------------------------------
Corbin             Human Resources
Corbin             Accountant
Cort               Programmer
Cort               Receptionist
Cort               Helpdesk

Заранее спасибо!

1 Ответ

0 голосов
/ 02 марта 2020
SELECT jsontable.profession, COUNT(jsontable.profession) number_of_staffs
FROM staffs_table
CROSS JOIN JSON_TABLE( CONCAT('["', REPLACE(staffs_table.profession, '|', '","'), '"]'),
                       "$[*]" COLUMNS( profession VARCHAR(254) PATH "$" )
                     ) AS jsontable
GROUP BY jsontable.profession;

скрипка

...