Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Agrupamento MySQL com um campo separado por vírgulas


Você precisa ter um conjunto de linhas contendo todos os valores possíveis de suas habilidades.

MySQL falta uma maneira de fazer isso, então você terá que gerá-lo de alguma forma.

Se você tiver esse conjunto de resultados, basta emitir:
SELECT  skill, COUNT(*)
FROM    (
        SELECT 'Install' AS skill
        UNION ALL
        SELECT 'Configure' AS skill
        UNION ALL
        SELECT 'Setup' AS skill
        UNION ALL
        SELECT 'Blah' AS skill
        ) s
JOIN    users u
ON      find_in_set(s.skill, u.sets)
GROUP BY
        s.skill

Como você mencionou que tem suas habilidades em uma tabela separada, use essa tabela:
SELECT  skill, COUNT(*)
FROM    skills s
JOIN    users u
ON      find_in_set(s.skill, u.sets)
GROUP BY
        s.skill

Isso, no entanto, nunca corresponderá aos erros de digitação, eles serão apenas ignorados.