【发布时间】:2014-08-17 14:58:28
【问题描述】:
我需要从表中获取唯一值。我有一列用逗号分隔的关键字。我需要导出一个没有重复的所有关键字的列表。计算每个关键字出现的频率。
根据我的研究,这是一个类似 UNPIVOTING 的函数,列数未知?
例如:
关键词
- 红、蓝、黄
- 蓝色、橙色、黑色、白色
- 棕色、黑色、透明、粉红色
- 蓝色、紫色、橙色
结果
颜色 |数
- 红1
- 蓝色3
- 黄色1
- 橙色 2
- 黑色2
- 白1
- 棕色 1
- 清除 1
- 粉色1
- 紫1
提前谢谢你!!
** 到目前为止,我已经尝试添加一个explode_table 类型的过程,但意识到我不能从视图中动态调用它。然后我一直在尝试在列上执行反向 GROUP_CONCAT()。我无法生成执行的代码。
我的 echo_Me 的回答:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(sKeywords, ',', n.n), ',', -1) value , count(*) as counts
FROM tblPatternMetadata t CROSS JOIN
(SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a, (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n ) n
WHERE n.n <= 1 + (LENGTH(sKeywords) - LENGTH(REPLACE(sKeywords, ',', ''))) group by value
【问题讨论】:
-
发布您尝试过的查询