这是一个棘手的问题.
我的数据如下:
User ID Name Skill Sets 1 Jim Install, Configure 2 Jack Install 3 John Configure, Setup, Blah 4 Bill Setup, Install
这不是我的设计,也不是改变数据格式化方式的选项.麻烦的是我需要按照独特的技能组合.显然现在的一个小组给了我:
Skill Set Count Install, Configure 1 Install 1 Configure, Setup, Blah 1 Setup, Install 1
期望的输出是:
Skill Set Count Install 3 Configure 2 Setup 2 Blah 1
有任何想法吗?我可以想象一个将技能集分成标准化形式的视图(应该是这样).但我对这方面的语法也不是肯定的.
您需要一个包含所有可能的技能值的行集.
MySQL 缺乏一种方法,所以你必须以某种方式生成它.
如果您有这样的结果集,只需发出:
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
Run Code Online (Sandbox Code Playgroud)
由于您提到您在单独的表中拥有自己的技能,因此请使用该表:
SELECT skill, COUNT(*)
FROM skills s
JOIN users u
ON find_in_set(s.skill, u.sets)
GROUP BY
s.skill
Run Code Online (Sandbox Code Playgroud)
然而,这不会与拼写错误相匹配,它们将被跳过.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |